java将字符串Arraylist转换为双Arraylist

java将字符串Arraylist转换为双Arraylist,java,string,casting,double,Java,String,Casting,Double,我有一个字符串数组列表,我将把它转换成双数组列表。除了使用诸如for、While之类的循环之外,还有其他方法可以转换它吗 ArrayList<String> S=new ArrayList<String>(); S=FillTheList(); ArrayList<Double> D=new ArrayList<Double>(); arraylists=newarraylist(); S=圆角列表(); ArrayList D=新的Ar

我有一个字符串数组列表,我将把它转换成双数组列表。除了使用诸如for、While之类的循环之外,还有其他方法可以转换它吗

ArrayList<String>  S=new ArrayList<String>();

S=FillTheList();

ArrayList<Double>  D=new ArrayList<Double>();
arraylists=newarraylist();
S=圆角列表();
ArrayList D=新的ArrayList();

假设你真的希望你的
数组列表包含
Double
当你完成时,不,没有其他选择,你必须循环,将每个
字符串转换成
Double
并将
Double
添加到新的
数组列表中


请注意,在运行时,Java实际上并不知道
列表
包含的类型-它不知道它是
数组列表
,它只知道它是
数组列表
。因此,JVM无法知道需要执行什么操作来转换
ArrayList
(它也将其视为
ArrayList
)的内容并将其添加到JDK中的
ArrayList

,直到版本7,JDK 8将不支持函数编程(有关语法,请参见下面@JBNizet的注释)

但是,您可以使用来实现此目的:

final Function<String, Double> fn = new Function<String, Double>()
{
    @Override
    public Double apply(final String input)
    {
        return Double.parseDouble(input);
    }
};

// with S the original ArrayList<String>

final List<Double> D = Lists.transform(S, fn);
最终函数fn=新函数()
{
@凌驾
公共双应用(最终字符串输入)
{
返回Double.parseDouble(输入);
}
};
//使用原始的ArrayList
最终列表D=Lists.transform(S,fn);
请注意,虽然此代码中没有循环,但在内部代码仍将使用循环


但是,更重要的是,您不能将
字符串
转换为
双精度
,因为这是两个不同的类。您必须通过如上所示的解析方法。

如果您使用番石榴,是的。JDK本身没有这种机制,至少不到版本7。版本8将支持它,而旁注:如果重新分配一个新列表(由
FilltList()
返回,该列表应命名为
FilltList()
),那么将空数组列表分配给
s
(应命名为
FilltList()
)有什么意义要想
S
紧跟其后?@salmanashkarara查看我的答案只是为了记录,在Java 8中,您可以执行
List d=S.stream().map(Double::valueOf).collect(Collectors.toList());