如何在Java中将List<Integer>转换为int[]?这与这个问题类似:如何在Java中将int[]转换为Integer[]?我对Java很陌生。如何转换List<Integer>到int[]在爪哇?我很困惑因为List.toArray()实际上返回Object[],可以投到下面Integer[]或int[].现在,我正在使用一个循环来这样做: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;}我肯定还有更好的办法。
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
int[] array = list.stream().mapToInt(i->i).toArray();
简约 Stream#toArray
回报 Object[]
所以这不是我们想要的。也 Stream#toArray(IntFunction<A[]> generator)
不做我们想做的事,因为泛型类型 A
不能表示原语 int
所以最好有一些可以处理原语类型的流。 int
,因为它 toArray
方法很可能也会返回。 int[]
数组(返回类似于 Object[]
甚至是盒装 Integer[]
在这里是不自然的)。幸运的是,Java 8有这样的流: IntStream
所以现在我们唯一需要解决的就是如何把我们的 Stream<Integer>
(将从 list.stream()
)到那闪闪发亮的 IntStream
..这里 mapToInt
方法来拯救。我们所需要做的就是提供一些映射 Integer
到 int
..我们可以用这样的方法 Integer#getValue
返回 int
:mapToInt( (Integer i) -> i.intValue())
(或者如果有人愿意 mapToInt(Integer::intValue)
)但是可以使用unbox生成类似的代码,因为编译器知道这个lambda的结果必须是 int
(Lambda in mapToInt
正在实施 ToIntFunction
接口,该接口期望主体为 int applyAsInt(T value)
方法,它将返回 int
).所以我们可以简单地写 mapToInt((Integer i)->i)
或更简单(因为 Integer i
类型可以由编译器推断,因为 List<Integer>#stream()
回报 Stream<Integer>
)mapToInt(i -> i)
添加回答
举报
0/150
提交
取消