gpt4 book ai didi

java - 如何将流收集到列表中?

转载 作者:行者123 更新时间:2023-12-01 06:48:41 26 4
gpt4 key购买 nike

我正在关注 Java Streams 上的一些教程看起来所有这些教程都已经过时了(或者显然我不明白)

 var list = Arrays.stream(new int[] {1,2,3,4,5,6})
.filter(x -> x > 3)
.collect(toList());

它告诉我这个错误:

Expected 3 arguments but found 1

但是每个教程都使用这样的收集代码。

出了什么问题?

最佳答案

Arrays.stream(new int[] {1,2,3,4,5,6})创建 IntStream ,其中没有 collect采用单个参数的方法( collectIntStream 方法具有签名 - <R> R collect(Supplier<R> supplier, ObjIntConsumer<R> accumulator, BiConsumer<R, R> combiner) )。即使确实如此,toList()不适用,因为 Java 不允许 List<int> (即带有原始元素的 List )。 List 的元素必须是引用类型。

您可以使用包装器 Integer输入:

var list = Arrays.stream(new Integer[] {1,2,3,4,5,6})
.filter(x -> x > 3)
.collect(toList());

或者继续使用IntStream ,并将其装箱到 Stream<Integer>稍后为了将元素收集到 List<Integer> :

var list = Arrays.stream(new int[] {1,2,3,4,5,6})
.filter(x -> x > 3)
.boxed()
.collect(toList());

如果您希望继续与 int 合作s,您可以生成 int来自过滤后的元素的数组 IntStream :

var array = Arrays.stream(new int[] {1,2,3,4,5,6})
.filter(x -> x > 3)
.toArray();

关于java - 如何将流收集到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com