孓访懔 发表于 2025-6-1 19:03:19

基本类型与包装类型相互转化,如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)。
[*]由于 Java 的泛型不支持基本类型(如 int),所以在需要泛型操作(如 Stream)时,必须使用包装类型(如 Integer)。
[*]这一步的作用是将 IntStream 转换为 Stream。
3. .toArray(Integer[]::new)


[*].toArray() 是流(Stream)的终止操作,用于将流转换为数组。
[*]Integer[]::new 是一个数组构造器引用,相当于 size -> new Integer,告诉 toArray 方法生成一个 Integer[] 数组。
[*]最终,Stream 被转换为 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();
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 基本类型与包装类型相互转化,如int[]与Integer[]相互转化