开发者

How to (efficiently) convert int[] to Integer[]?

Is there any direct way to convert int array to Integer array with out looping element by element.

Brute force way will be

int [] a = {1,2,3};
Integer [] b = new Integer[a.length];
for(i =0; i&l开发者_JAVA技巧t;a.length; i++)
    b[i]= i;

Is there any direct way with out traveling the entire array?


You've found the "only" way to do it using pure Java. I prefer to make the Integer construction explicit, via

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]);
}

Note that Apache has some utilities in Apache Lang, which basically do the same thing; however, the call looks more like

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

Of course, if you don't include the Apache libraries, you could write your own static function to make the code look pretty (if that's your concern).


There's noting built in JDK but if you have apache commons, you could use

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


There are third-party libraries which will do the dirty work for you, but they're just going to loop under the covers.

E.g. with Guava:

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

They don't give a one-method conversion presumably because you probably shouldn't be using arrays anyway but rather a List.


That's really the only way. When you're doing b[i] = i Java is auto unboxing your int to Integer. However that doesn't work when going from an int-array to an Integer-array.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜