我有一个字符串数组列表,我将把它转换为一个双数组列表。除了使用for,While之类的循环来转换它之外,还有其他方法吗?
ArrayList<String> S=new ArrayList<String>();
S=FillTheList();
ArrayList<Double> D=new ArrayList<Double>();
在 JDK 中,直到版本 7,没有。不过,JDK 8 将支持函数式编程(有关语法,请参见下面@JBNizet 的评论)。
但是,您可以使用Guava来实现这一点:
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);
请注意,虽然此代码中没有循环,但在内部代码无论如何都会使用循环。
然而,更重要的是您的原始问题,您不能将 aString
转换为 a Double
,因为它们是两个不同的类。您必须通过如上所示的解析方法。
假设您确实希望您在完成ArrayList
后包含Double
s,不,别无选择,您将不得不循环,将每个转换String
为 aDouble
并将 the 添加Double
到新的ArrayList
.
请注意,在运行时,Java 实际上并不知道 aList
包含的类型——它不知道它是一个ArrayList<Double>
,它只知道它是一个ArrayList
. 因此,JVM 无法知道需要进行什么操作来转换您的内容ArrayList<String>
(它也将其视为ArrayList
)并将它们添加到您的ArrayList<Double>
.