2013-04-02 158 views
-2

我有一個Arraylist,我想將其轉換爲數組。我正在使用這個:將數組列表轉換爲數組

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

但是,它不起作用。任何想法如何解決它?提前致謝。 看來它返回的對象。

+0

那麼,是你的名單?你知道集合只能包含原語的包裝嗎? – skuntsel

回答

4

用於將List<Double>double[],或任何地方你需要原始類型,除了做傳統的for循環(或者調用一個傳統的for循環的第三方庫方法,比如Guava的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()]); 

這將讓你盒裝Double s,這可能足以反正你的目的的陣列。

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(); 
+0

你試過這個嗎?仿製藥的工作方式並不像這樣。 –

+0

@LouisWasserman你是對的,我錯過了:) ..更新了我的答案。 –

3

列表不能包含原始類型。假設它包含Double情況下,唯一的辦法就是遍歷列表和拆箱的每個元素(希望有一個列表中沒有空):

double[] array = new double[list.size()]; 
int i = 0; 
for (Double d : list) { 
    array[i] = d; 
    i++; 
} 
0

使用對象不加倍原始的雙:

ArrayList<Double> list = new ArrayList<Double>(); 
...add data 
Double[] array=list.toArray(new Double[list.size()]); 
+0

我懷疑這是提問者的目標是什麼。他們可能希望對那些'雙打'作爲原語執行操作。 –

-1
 StringBuffer strBuffer = new StringBuffer(); 
     for(Object o:list){ 
      strBuffer.append(o); 
     } 
     double []x = new double[]{strBuffer.toString()}; 

我認爲這應該工作

+1

此答案無效。這和你的[其他答案在這裏]是一樣的(http://stackoverflow.com/a/16336520/922184)。請確保您的答案在發佈之前真正起作用。 – Mysticial