写点什么

如何将 List<Integer>转换为 int[] 数组

作者:liuzhen007
  • 2021 年 12 月 31 日
  • 本文字数:674 字

    阅读完需:约 2 分钟

如何将List<Integer>转换为int[]数组

目录

  • 问题

  • 解决

问题

问题:如何将 List 转换为 int[]数组?

Stackoverflow 地址stackoverflow.com/questions/9…

一般常规做法:

int[] toIntArray(List<Integer> list){    int[] ret = new int[list.size()];    for(int i = 0;i < ret.length;i++)      ret[i] = list.get(i);    return ret;}
复制代码

解决

有人认为,上述常规的做法就是最好的方法,并且得到了很多的赞同。

但是,后来有人指出,如果你使用 java 8 的话,那么还有更加方便的做法。

具体编码如下:

int[] array = list.stream().mapToInt(i->i).toArray();
复制代码

或者使用

int[] array = list.stream().mapToInt(Integer::intValue).toArray();
复制代码

这么做的原因有三个。

一、如果使用直接链表 List 的 toArray()方法,返回的是一个 Object[]对象数组,这并不是我们想要的。

二、Integer 数组和 int 数组并不是完全一样的,需要转换成真正的 int 数组。

三、我们可以使用 Integer#intValue 的方法返回 int 类型,比如:

mapToInt( (Integer i) -> i.intValue() )  
复制代码

其实,还有更加简单的方法,我们可以写成如下形式:

mapToInt((Integer i)->i)
复制代码

此外,由于编译器可以推断 i 是一种 Integer 类型,因为 List#stream()返回 stream,所以我们也可以直接跳过这一步,我们得到更加简便的方法:

 mapToInt(i -> i)
复制代码


作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!😄

发布于: 3 小时前
用户头像

liuzhen007

关注

敲代码,搞开发。 2021.05.01 加入

本人深耕音视频技术,走全栈路线,前后端通吃,兼顾各端与流媒体服务器。 博客主页地址:https://liuzhen.blog.csdn.net 微信公众号:玩转音视频 欢迎交流学习!

评论

发布
暂无评论
如何将List<Integer>转换为int[]数组