【问题标题】:How do I convert an ArrayList of integers to a double[]?如何将整数的 ArrayList 转换为 double[]?
【发布时间】:2016-10-06 21:29:19
【问题描述】:

我已经设置了以下ArrayList:

ArrayList<Integer> myIntegerValues = new ArrayList<Integer>();
myIntegerValues.add(0);
myIntegerValues.add(1);
myIntegerValues.add(0);
myIntegerValues.add(1);

我想将其转换为double[] 并运行这样一段简单的代码

double[] myList = {1.9, 2.9, 3.4, 3.5, 2.9, 3.8, 10.2};        
for (int i = 0; i < myList.length; i++) {
    System.out.println(myList[i] + " ");
}

如何将ArrayList 转换为double[]

我找到了这个链接 How to cast from List<Double> to double[] in Java? 但我不确定这是否回答了我的问题。

【问题讨论】:

  • 您希望将 1 转换为 1.9 还是 1.3 或类似的东西?除非你把它喂出来,否则有人怎么知道 1 的实际价值是多少?您可以将其从 1 转换为 1.0
  • 你看过这个:stackoverflow.com/questions/718554/… 吗?尝试添加演员表
  • 我使用的java统计包需要double[]作为输入。 ArrayList 不能用作输入。所以我试图转换我的 ArrayList 中的数字,以便我可以在统计包数据结构中使用它们。
  • 最好的办法是创建一个大小匹配的数组,然后遍历这些条目,然后进行投射。

标签: java arraylist


【解决方案1】:
double[] array = myIntegerValues.stream().mapToDouble(i -> (double) i).toArray();

【讨论】:

  • 也可以使用 Integer::doubleValue 代替 lambda。
  • @JornVernee,是的,但是对于 OP,它可能有点不明显
  • 不公平,我喜欢成为抛出 Java 8 答案的人。
  • 我尝试了这个解决方案,但无法正常工作。它看起来比我接受的更优雅,如果它更有效,我更愿意接受你的。但是我在您的代码行中的任何地方都没有看到 ArrayList。我不确定它应该如何工作。
  • @Mr.NoName,list 变量是您的 ArrayList,我将其重命名为 myIntegerValues
【解决方案2】:

最好的办法是创建一个大小匹配的数组,然后迭代这些条目,然后进行强制转换。

double[] myList = new double[myIntegerValues.size()];
for (int i=0; i<myIntegerValues.size(); i++) {
   myList[i] = (double) myIntegerValues.get(i);
}

注意,虽然我可以使用迭代器,但使用索引可以明确一对一的关系。

【讨论】:

    【解决方案3】:

    首先声明一个数组列表大小的双数组,因为数组不是动态的。

    double[] doublesList = new double[myIntegerValues.size()];
    

    然后循环遍历并转换每一个

    int x = 0;
    for(Integer i : myIntegerValues){
        doublesList[x] = (double)i;
        x++;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多