我正在查看IntStream
的文档,我看到toArray
方法,但无法直接转到List<Integer>
肯定有办法将Stream
转换为List
?
答案 0 :(得分:471)
IntStream.boxed
将IntStream
变为Stream<Integer>
,然后您可以collect
进入列表:
theIntStream.boxed().collect(Collectors.toList())
答案 1 :(得分:16)
你也可以在Stream上使用mapToObj(),它接受一个IntFunction并返回一个对象值Stream,它包含将给定函数应用于该流元素的结果。
List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList());
答案 2 :(得分:9)
您可以使用Eclipse Collections中可用的原始集合并避免装箱。
MutableIntList list =
IntStream.range(1, 5)
.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
注意:我是Eclipse Collections的撰稿人。
答案 3 :(得分:1)
找到以下示例,使用Java 8查找每个int元素的平方:-
IntStream ints = Arrays.stream(new int[] {1,2,3,4,5});
List<Integer> intsList = ints.map(x-> x*x)
.collect(ArrayList<Integer>::new, ArrayList::add, ArrayList::addAll);