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

举报
liuzhen007 发表于 2021/07/25 17:19:04 2021/07/25
【摘要】 目录问题解决 问题问题:如何将List<Integer>转换为int[]数组?Stackoverflow地址:https://stackoverflow.com/questions/960431/how-to-convert-listinteger-to-int-in-java一般常规做法:int[] toIntArray(List<Integer> list){ int[] ret ...

目录

  • 问题
  • 解决

问题

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

Stackoverflow地址https://stackoverflow.com/questions/960431/how-to-convert-listinteger-to-int-in-java

一般常规做法:

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<Integer>#stream()返回stream<Integer>,所以我们也可以直接跳过这一步,我们得到更加简便的方法:

 mapToInt(i -> i)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。