如何(有效地)将int []转换为Integer []?

时间:2011-09-23 19:35:39

标签: java

是否有任何直接的方法将int数组转换为Integer数组,并逐个元素地循环。

蛮力方式

int [] a = {1,2,3};
Integer [] b = new Integer[a.length];
for(i =0; i<a.length; i++)
    b[i]= i;

有没有直接的方法来旅行整个阵列?

4 个答案:

答案 0 :(得分:8)

您已经找到了使用纯Java的“唯一”方法。我更喜欢通过

使Integer结构显式化
int[] a = {1,2,3};
Integer[] b = new Integer[a.length];
for (int i = 0; i < a.length; i++) {
    b[i] = Integer.valueOf(a[i]);
}

请注意,Apache在Apache Lang中有一些实用程序,基本上做同样的事情;但是,通话看起来更像是

Integer[] newArray = ArrayUtils.toObject(oldArray);

当然,如果你不包含Apache库,你可以编写自己的静态函数来使代码看起来很漂亮(如果你担心的话)。

答案 1 :(得分:5)

有JDK内置,但如果你有apache commons,你可以使用

Integer[] ArrayUtils.toObject(int[] array)

答案 2 :(得分:2)

有些第三方图书馆会为你做肮脏的工作,但它们只是在幕后循环。

E.g。与Guava

int[] primitives = {1,2,3};
List<Integer> boxed = Ints.asList(primitives);
Integer[] boxedArray = Ints.asList(primitives).toArray(new Integer[]);

他们不提供单方法转换,大概是因为你可能不应该使用数组而是List

答案 3 :(得分:2)

这真的是唯一的方法。当你在做b [i] = i时,Java会自动将你的int拆箱到整数。但是,当从int数组转换为Integer数组时,这不起作用。