2012-08-26 31 views
0

我有一個函數取一個int數組,需要有一個數組放入一個ArrayList如何在java中將int []轉換爲Integer []?

於是我就用list.addAll(Arrays.asList(array));

但是,由於listArrayList<Integer>,該addAll只接受Integer[]代替int[]

我應該如何將原始數組裝入一個整數對象數組?

+0

循環遍歷原始列表的元素,建立一個對象,並將其添加到第二個列表中。 –

+0

'列表 .addAll'既不接受Integer []也不接受int []。 – oldrinb

+0

@veer sry我的意思是asList方法:P – NSF

回答

3

您可以使用ArrayUtils從Apache的百科全書:

Integer[] integerArray = ArrayUtils.toObject(intArray); 

從此跟着上創建一個List<Integer>,你可以使用:

List<Integer> integerList = Arrays.asList(ArrayUtils.toObject(intArray)); 
+2

首先將'int []'轉換爲等效的'Integer []'沒有意義,然後通過'Arrays.asList'封裝它,以便在執行'list.addAll'時複製所有內容。 – oldrinb

+0

@veer他們是單獨的代碼,而不是相關的代碼 –

+0

@MichaelBuen恐怕我不太明白你的觀點。我描述了什麼'list.addAll(Arrays.asList(ArrayUtils.toObject(array)));'。什麼單獨的代碼?如果你說Apache Commons是一個單獨的庫,是的,我很清楚這一點。 – oldrinb

1

遍歷int數組並實例化新的Integer對象,並將它們放置在ArrayList中。您將無法使用自動裝箱功能,因爲它只適用於基元。數組不是原始類型。

2
static void addAll(final Collection<Integer> collection, final int[] v) { 
    for (final int i : v) { 
    collection.add(i); 
    } 
} 
... 
addAll(list, array); 
0

如果你有Guava,你可以只用

list.addAll(Ints.asList(array)); 

......順便說一下,它比Apache Commons技術創造出更少的不必要的對象。 (具體地講,它不會打擾創造一個Integer[];它只會返回一個List<Integer>視圖的int[]的。)

披露:我對番石榴貢獻。