【问题标题】:java-Cast String Arraylist to double ArrayListjava-Cast String Arraylist to double ArrayList
【发布时间】:2013-06-01 15:24:11
【问题描述】:

我有一个 String 数组列表,我将把它转换成一个 double 数组列表。除了使用像 for,While 这样的循环来转换它,还有什么办法吗?

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

S=FillTheList();

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

【问题讨论】:

  • 如果你使用番石榴,是的。 JDK 本身没有这种机制,至少版本 7 没有。不过,版本 8 将支持它。
  • 旁注:如果您重新分配一个新列表(由FillTheList() 返回,应该命名为fillTheList()) 到 S 之后?
  • @SalmanLashkarara 看到我的回答

标签: java string casting double


【解决方案1】:

在 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,因为它们是两个不同的类。您必须通过如上所示的解析方法。

【讨论】:

  • 只是为了记录,在Java 8中,你可以这样做List&lt;Double&gt; d = s.stream().map(Double::valueOf).collect(Collectors.toList());
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2019-10-03
    • 2017-08-30
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多