【发布时间】:2015-07-24 19:43:58
【问题描述】:
从教程here,我看到我可以按属性对对象进行分组:
Map<Person.Sex, List<Person>> byGender =
roster
.stream()
.collect(
Collectors.groupingBy(Person::getGender));
如果我需要按带有参数的方法进行分组,例如steve.get("height") 而不是steve.getHeight(),该怎么办?我怀疑这可以用 lambda 来完成,但我找不到正确的语法。我现在所拥有的:
people.stream().collect(Collectcors.groupingBy(p -> p.get("height")));
按 lambda 函数的结果分组的正确语法是什么?
【问题讨论】:
-
那么编译错误是什么?您尝试将结果分配给的地图看起来如何?这个
get方法有什么作用? -
Person是否有一个名为get的方法?什么是编译错误?如果您的代码无法编译并且您不明白原因,发布编译错误会很有帮助。 -
同意@AlexisC 的评论,请编辑您的问题以包含MVCE。
-
好的。具体错误无关紧要。我认为
steve.get("height")暗示Person.get(String)确实是一个函数。无论如何,我想出了答案。
标签: java lambda java-8 java-stream