-2

我有一个 Arraylist,我想将其转换为数组。我正在使用这个:

double[] array = new double[list.size()];
double [] array = list.toArray(new double[list.size()]);

但是,它不起作用。知道如何解决吗?提前致谢。它似乎返回对象。

4

6 回答 6

4

为了将 a 转换List<Double>为 adouble[]或任何您需要原始类型的东西,除了执行传统for循环(或调用执行传统循环的第三方库方法for,例如 Guava's Doubles.toArray)之外别无选择。

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

或者,你可以做

Double[] array = list.toArray(new Double[list.size()]);

这将为您提供 boxedDouble的数组,无论如何这可能足以满足您的目的。

于 2013-04-02T19:57:35.780 回答
3

List 不能包含原始类型。假设它包含 的实例Double,唯一的方法是遍历列表并拆箱每个元素(希望列表中没有 null):

double[] array = new double[list.size()];
int i = 0;
for (Double d : list) {
    array[i] = d;
    i++;
}
于 2013-04-02T19:58:07.400 回答
0

它应该是:

Double[] array = new Double[list.size()];
list.toArray(array); // fill the array

如果您想要一个基元数组,请遍历数组中的每个元素:

double[] array = new double[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i).doubleValue();
于 2013-04-02T19:57:31.727 回答
0

请阅读 java 文档:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html

HTH。

于 2013-04-02T19:59:06.293 回答
0

使用 Object Double 而不是原始的 double:

ArrayList<Double> list = new ArrayList<Double>();
...add data
Double[] array=list.toArray(new Double[list.size()]);
于 2013-04-02T19:59:39.570 回答
-1
       StringBuffer strBuffer = new StringBuffer();
        for(Object o:list){
            strBuffer.append(o);
        }
        double []x = new double[]{strBuffer.toString()};

我认为这应该有效

于 2013-05-02T13:40:14.943 回答