我有一个字符串arraylist ,我将把它转换为双arraylist 。有没有办法,除了使用像这样的循环,而转换它?
ArrayList<String> S=new ArrayList<String>();
S=FillTheList();
ArrayList<Double> D=new ArrayList<Double>();
答案 0 :(得分:6)
在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);
请注意,虽然此代码中没有循环,但代码内部仍会使用循环。
然而,更多关于原始问题,您无法将String
转换为Double
,因为这是两个不同的类。你必须通过如上所示的解析方法。
答案 1 :(得分:2)
假设您在完成后确实希望ArrayList
包含Double
,不,没有其他选择,您将不得不循环,转换每个String
到Double
并将Double
添加到新ArrayList
。
请注意,在运行时,Java实际上并不知道List
包含的类型 - 它不知道它是ArrayList<Double>
,它只知道它是ArrayList
。因此,JVM无法知道转换ArrayList<String>
(它还被视为ArrayList
)的内容并将其添加到ArrayList<Double>
时需要执行的操作。