我正在查看文档IntStream
,我看到了一种toArray
方法,但没有办法直接进入List<Integer>
当然有一种方法可以将a转换Stream
为List
?
Ian*_*rts 515
IntStream.boxed
将a IntStream
转换为a Stream<Integer>
,然后您可以将其collect
转换为列表:
theIntStream.boxed().collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
小智 16
您还可以在Stream上使用mapToObj(),它接受IntFunction并返回一个对象值Stream,其中包含将给定函数应用于此流元素的结果.
List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
您可以使用Eclipse集合中可用的原始集合并避免装箱.
MutableIntList list =
IntStream.range(1, 5)
.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
Run Code Online (Sandbox Code Playgroud)
注意:我是Eclipse Collections的贡献者.
您可以使用 collect 方法:
IntStream.of(1, 2, 3).collect(ArrayList::new, List::add, List::addAll);
Run Code Online (Sandbox Code Playgroud)
事实上,当你在对象流上调用 .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);
}
Run Code Online (Sandbox Code Playgroud)
注意:第三个参数只有在运行并行收集时才需要;对于顺序收集,仅提供前两个就足够了。
归档时间: |
|
查看次数: |
73715 次 |
最近记录: |