java-Cast String Arraylist加倍ArrayList

时间:2013-06-01 15:24:11

标签: java string casting double

我有一个字符串arraylist ,我将把它转换为双arraylist 。有没有办法,除了使用像这样的循环,而转换它?

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

S=FillTheList();

ArrayList<Double>  D=new ArrayList<Double>();

2 个答案:

答案 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,不,没有其他选择,您将不得不循环,转换每个StringDouble并将Double添加到新ArrayList

请注意,在运行时,Java实际上并不知道List包含的类型 - 它不知道它是ArrayList<Double>,它只知道它是ArrayList 。因此,JVM无法知道转换ArrayList<String>(它还被视为ArrayList)的内容并将其添加到ArrayList<Double>时需要执行的操作。