2012-08-26 38 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[]的。)

披露:我对番石榴贡献。