如何将List<Integer>转换为int[]数组
【摘要】 目录问题解决 问题问题:如何将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)