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

收集器。of()参数类型的解析方式不符合我的要求

莘康裕
2023-03-14
    Collector<Integer, List<Integer>, List<Integer>> myCollector = 
            Collector.of(ArrayList<Integer>::new, 
                    (list, element) -> {list.add(element);}, 
                    (list1, list2) -> {list1.addAll(list2);},  
                    Function.identity();, 
                    Characteristics.values()
                    );

当我运行上面的代码时,我期望静态函数Collector.of()中使用的类型将被解析,但事实并非如此。它在eclipse中调用以下错误

方法(供应商、双消费者、二进制运算符、函数、收集器、特性…)类型收集器中的不适用于参数(ArrayList::new,(list,element)-

我需要帮助。

共有2个答案

仲绍晖
2023-03-14

第三个参数中缺少返回值(BinaryOperator必须有返回值):

Collector<Integer, List<Integer>, List<Integer>> myCollector = 
        Collector.of(ArrayList<Integer>::new, 
                (list, element) -> {list.add(element);}, 
                (list1, list2) -> {list1.addAll(list2); return list1;}, 
                                                    //  -------------   added 
                Function.identity(), 
                Characteristics.values()
                );

您还有一个额外的 后<代码>功能。identity()

谭炎彬
2023-03-14

基本上有两个问题-

>

  • 函数后出现语法错误。identity()您不能拥有

    缺少第三个参数,它是返回值。

  •  类似资料:
    • 我试图理解为什么当我在MyModel中为T使用更高类型的参数时,以下代码无法编译 但是如果我把它改成< code > new Bar[my model[Any]]它就会编译。这是为什么呢?

    • 问题内容: 在Java中,我需要从我的方法中返回一个Iterator。我的数据来自另一个对象,该对象通常可以给我一个迭代器,因此我可以返回它,但是在某些情况下,基础数据为null。为了保持一致,在这种情况下,我想返回一个“空”迭代器,这样我的调用者就不必测试null。 我想写一些类似的东西: 但是Java编译器抱怨返回而不是。投射到也不起作用。 问题答案: 您可以通过以下语法获取Foo类型的空列表

    • 我知道重载是在编译时决定的,但当我试图运行下面的示例时,它给出了我无法理解的结果 当我每次运行这个代码片段时,我都会得到“Collection”的输出,这意味着调用参数为Collection的classify方法。 请解释

    • 这可能是一个Java101问题。但是我已经离开java十年了,所以它对我来说是新的。 而且,changeFurColor()使用实现 的比较器对输入ArrayList进行排序,因此我需要在changeFurColor()方法中使用这个参数化类型。 我用changeFurColor(dogs)调用方法; 但是,这不会编译。类型 与类型 不匹配,尽管前者实现了后者。 伪代码: 更新changeFurC

    • 该页面主要反馈和分析项目运行过程中性能相关参数的具体使用情况。这些参数均是我们经过大量的项目优化所总结下来的经验参数。研发团队通过该项分析可以快速定位项目运行时的主要性能瓶颈。我们认为,对于重要参数所反映出的性能瓶颈进行有针对性的优化可以为项目带来大幅度的性能提升。目前,UWA所提供的重要性能参数主要有: Instantiate实例化操作 以上图表主要展示项目运行过程中 “Instantiate实