当前位置: 首页 > 知识库问答 >
问题:

如何将流收集到列表?[副本]

张嘉熙
2023-03-14
 var list = Arrays.stream(new int[] {1,2,3,4,5,6})
            .filter(x -> x > 3)
            .collect(toList());
Expected 3 arguments but found 1

出了什么问题?

共有1个答案

方弘
2023-03-14

Arrays.Stream(new int[]{1,2,3,4,5,6})创建一个IntStream方法,该方法没有采用单个参数的collect方法(IntStreamcollect方法具有签名- R collect(供应商 supplier,ObjintConsumer accumulator,Biconsumer combiner) )。即使这样,tolist()也不适用,因为Java不允许list (即带有基元元素的list)。列表的元素必须是引用类型。

您可以改用包装器integer类型:

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

或者继续使用IntStream,稍后将其框入Stream ,以便将元素收集到列表 :

var list = Arrays.stream(new int[] {1,2,3,4,5,6})
                 .filter(x -> x > 3)
                 .boxed()
                 .collect(toList());
var array = Arrays.stream(new int[] {1,2,3,4,5,6})
                  .filter(x -> x > 3)
                  .toArray();
 类似资料:
  • 如何使用将多个值收集到一个列表中? 因为我对接口有完全的控制权:还是应该更改方法以返回数组而不是列表?

  • 当流过< code>List时,如何将输出收集到一个链表中? 我尝试了以下方法: 但是这给了 java.util.数组列表不能转换为 java.util.链接列表.

  • 我一直在研究如何将IntStream“收集”到一个列表中从而生成一个随机的int列表,但是编译器一直在抱怨。下面是一段代码: 编译器给出的错误: 错误:(42,49)Java:接口java.util.Stream.IntStream中的方法collect不能应用于给定类型; 必需:java.util.function.supplier,java.util.function.objintconsum

  • 我有以下代码: 如您所见,我需要将< code >流的元素收集到< code >队列中,而不是< code >列表中。但是,没有< code > collectors . to queue()方法。如何将元素收集到< code >队列中?

  • 我有包含项目数组的类存储。 每个项目(类项目)有不同的体积,我正在添加项目到商店。假设我有20个项目,我把10个添加到2或3个不同的商店,我必须根据这些项目的数量在商店中排序。

  • 我对Java8相当陌生。我需要将POJO列表按一定标准转换为group,并在UI上显示。 > 将属于儿童类别的对象列表转换为人员类别。 返回列表。 ...主要代码... 上面的FOR-LOOP不能被Java8 Streams替换吗?