Answers:
IntStream::boxed
IntStream::boxed
将IntStream
变成Stream<Integer>
,然后可以将其collect
变成List
:
theIntStream.boxed().collect(Collectors.toList())
该boxed
方法将的int
原始值转换IntStream
为Integer
对象流。“装箱”一词称为int
⬌ Integer
转换过程。请参阅Oracle教程。
toList
。这是通过在文件导入中放置以下内容来完成的:static import java.util.stream.Collectors.toList;
。然后,收集呼叫将读取为.collect(toList())
。
Collectors
在“首选项” ->“ Java” ->“ 编辑器” ->“ 内容辅助” ->“ 收藏夹”中添加类来完成的。在此之后,您只需要toLi
在Ctr + Space处键入内容即可使IDE填写toList
并添加静态导入。
boxed()
部分
您还可以在Stream上使用mapToObj(),它接受一个IntFunction并返回一个对象值的Stream,该对象值包括将给定函数应用于此流的元素的结果。
List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList());
boxed()
是委派的。
您可以使用Eclipse Collections中可用的原始集合,并避免装箱。
MutableIntList list =
IntStream.range(1, 5)
.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
注意:我是Eclipse Collections的撰稿人。
MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
您可以使用collect方法:
IntStream.of(1, 2, 3).collect(ArrayList::new, List::add, List::addAll);
实际上,这几乎就是您在对象流上调用.collect(Collectors.toList())时Java所做的事情:
public static <T> Collector<T, ?, List<T>> toList() {
return new Collectors.CollectorImpl(ArrayList::new, List::add, (var0, var1) -> {
var0.addAll(var1);
return var0;
}, CH_ID);
}
注意:仅当您要运行并行收集时才需要第三个参数;对于顺序收集,只提供前两个就足够了。