简体   繁体   中英

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<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).

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

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.

Eg 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM