3

我有一个字符串数组列表,我将把它转换为一个双数组列表除了使用for,While之类的循环来转换它之外,还有其他方法吗?

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

S=FillTheList();

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

2 回答 2

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);

请注意,虽然此代码中没有循环,但在内部代码无论如何都会使用循环。

然而,更重要的是您的原始问题,您不能将 aString转换为 a Double,因为它们是两个不同的类。您必须通过如上所示的解析方法。

于 2013-06-01T15:34:46.200 回答
2

假设您确实希望您在完成ArrayList后包含Doubles,不,别无选择,您将不得不循环,将每个转换String为 aDouble并将 the 添加Double到新的ArrayList.

请注意,在运行时,Java 实际上并不知道 aList包含的类型——它不知道它是一个ArrayList<Double>,它只知道它是一个ArrayList. 因此,JVM 无法知道需要进行什么操作来转换您的内容ArrayList<String>(它也将其视为ArrayList)并将它们添加到您的ArrayList<Double>.

于 2013-06-01T15:33:29.977 回答