Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java流API中带参数的函数收集_Java_Lambda_Java 8_Java Stream - Fatal编程技术网

Java流API中带参数的函数收集

Java流API中带参数的函数收集,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,在本教程中,我可以按属性对对象进行分组: Map<Person.Sex, List<Person>> byGender = roster .stream() .collect( Collectors.groupingBy(Person::getGender)); 根据lambda函数的结果进行分组的正确语法是什么 people.stream().collect(Collectors.groupingBy(p

在本教程中,我可以按属性对对象进行分组:

Map<Person.Sex, List<Person>> byGender =
    roster
        .stream()
        .collect(
            Collectors.groupingBy(Person::getGender));
根据lambda函数的结果进行分组的正确语法是什么

people.stream().collect(Collectors.groupingBy(p -> p.get("height"), Collectors.toSet()));

那么编译错误是什么呢?您试图将结果分配给的地图看起来如何?这个
get
方法有什么作用?
Person
是否有一个名为
get
的方法?编译错误是什么?如果你的代码没有编译并且你不明白为什么,发布编译错误是有帮助的。根据@AlexisC的评论,请编辑你的问题以包含一个。好的。具体错误与此无关。我认为说
steve.get(“height”)
就意味着
Person.get(String)
确实是一个函数。无论如何,我找到了答案。如果你解决了你的问题,这很好,但我建议你也包括编译错误和你试图分配结果的映射类型。就目前而言,你的问题/答案对社区没有太大帮助。。。因为
p->p.get(“height”)
可能是分组依据的有效函数。您在问题中没有说您将结果类型从
…List>
更改为
…Set>
。如果你这样做了,一个合适的答案立刻出现了。但是,如果您只考虑将期望值从
List
更改为
Set
这一事实,您就会明白这与分组函数的语法无关。
people.stream().collect(Collectors.groupingBy(p -> p.get("height"), Collectors.toSet()));