基本类型与包装类型相互转化,如int[]与Integer[]相互转化
int[]转Integer[]
代码解析:
int[] arr1 = {1, 2, 3};
Integer[] arr2 = Arrays.stream(arr1).boxed().toArray(Integer[]::new);
1. Arrays.stream(arr1)
Arrays.stream(int[] array)是 Java 8 引入的流式操作 API,它接受一个int[]基本类型数组,并返回一个IntStream(基本类型int的流)。- 这里
arr1是int[]类型,所以Arrays.stream(arr1)返回一个IntStream。
2. .boxed()
.boxed()是IntStream的一个方法,用于将基本类型int的流 (IntStream) 转换为包装类型Integer的流 (Stream<Integer>)。- 由于 Java 的泛型不支持基本类型(如
int),所以在需要泛型操作(如Stream<T>)时,必须使用包装类型(如Integer)。 - 这一步的作用是将
IntStream转换为Stream<Integer>。
3. .toArray(Integer[]::new)
.toArray()是流(Stream<T>)的终止操作,用于将流转换为数组。Integer[]::new是一个数组构造器引用,相当于size -> new Integer[size],告诉toArray方法生成一个Integer[]数组。- 最终,
Stream<Integer>被转换为Integer[]数组。
补充说明:
-
如果是
double[]转Double[],写法类似:double[] arr1 = {1.0, 2.0, 3.0}; Double[] arr2 = Arrays.stream(arr1).boxed().toArray(Double[]::new); -
如果是
long[]转Long[]:long[] arr1 = {1L, 2L, 3L}; Long[] arr2 = Arrays.stream(arr1).boxed().toArray(Long[]::new);
Integer[]转int[]
//定义 Integer数组的两种方法
Integer[] numss = {4, 3, 5, 2, 6, 1,7};
Integer[] numss = new Integer[]{4, 3, 5, 2, 6, 1,7};
//Integer[]转int[],拆箱
Integer[] numss = new Integer[]{4, 3, 5, 2, 6, 1,7};
int[] nums = Arrays.stream(numss).mapToInt(Integer::intValue).toArray();

浙公网安备 33010602011771号