不知道你是否被这样的问题困扰过,就是包装数组与原生数组之间的转换,比如说int[]与Integer[]之间的转换。当然写一个for循环是可以完美解决这个问题的,但是有时候总是感觉得不偿失。
比如说:我有一个List里面收集了一些整数值,但是最终我想返回一个int[],怎么办呢?这里我想是有两种办法的:
1、new 一个int[],然后写一个for循环依次赋值即可。
2、使用toArray(new Integer[0])返回一个Integer类型的数组(注意这里的坑,返回的是Integer类型的数组而不是int类型的数组,你也不能写toArray(new int[0])期待返回一个int类型的数组),然后在for循环将Integer转换省int型数组。当然也可以借助一个开源库,比如org.apache.commons.lang3.ArrayUtils类的toPrimitive方法:
public static int[] toPrimitive(final Integer[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return new int[0];
}
final int[] result = new int[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[i].intValue();
}