根本类型与包装类型相互转化,如int[]与Integer[]相互转化 ...

打印 上一主题 下一主题

主题 1688|帖子 1688|积分 5064

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int[]转Integer[]

代码解析:
  1. int[] arr1 = {1, 2, 3};
  2. 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[size],告诉 toArray 方法生成一个 Integer[] 数组。
  • 最终,Stream 被转换为 Integer[] 数组。
补充说明:


  • 如果是 double[] 转 Double[],写法雷同:
    1. double[] arr1 = {1.0, 2.0, 3.0};
    2. Double[] arr2 = Arrays.stream(arr1).boxed().toArray(Double[]::new);
    复制代码
  • 如果是 long[] 转 Long[]:
    1. long[] arr1 = {1L, 2L, 3L};
    2. Long[] arr2 = Arrays.stream(arr1).boxed().toArray(Long[]::new);
    复制代码
Integer[]转int[]
  1. //定义 Integer数组的两种方法
  2. Integer[] numss = {4, 3, 5, 2, 6, 1,7};
  3. Integer[] numss = new Integer[]{4, 3, 5, 2, 6, 1,7};
  4. //Integer[]转int[],拆箱
  5. Integer[] numss = new Integer[]{4, 3, 5, 2, 6, 1,7};
  6. int[] nums = Arrays.stream(numss).mapToInt(Integer::intValue).toArray();
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表