php小编草莓在这篇文章中将为大家介绍Lamba函数在Java的groupingBy方法中所起的作用。groupingBy是通过Collectors接口实现的一个用于分组的方法。然而,Lamba函数在该方法中并不起作用。接下来,我们将详细说明为什么Lamba函数无法在groupingBy方法中使用,并提供一些替代方案。让我们一起来探索吧!
我创建了第一个地图,其中键是体育课程的字符串槽,值是每个槽的参与者数量。现在我想创建第二个地图,其键和值基本上颠倒,因此键将是参与者的数量,值将是具有该参与者数量的插槽列表。我编写了这段代码,但我不知道为什么它在第二个 java 流中抱怨我的 lambda 函数...我真的花了一个小时思考它,我真的很感激任何帮助!提前致谢,这是代码:
public SortedMap<Integer, List<String>> slotsPerNofParticipants(String gymnname) throws FitException{ // map with key = Slot value = number of participants for the slot Map<String, Long> map = this.reservationsColl.stream().filter(r->r.getGym().getName().equals(gymnname)) .collect(Collectors.groupingBy(r->r.getDayslotStringFormat(), Collectors.counting() )); // map with key = number of participants value = list of slot with that number of participants Map<Integer,List<String>> res = map.entrySet().stream() .collect(Collectors.groupingBy( e->e.getValue.intValue(), Collectors.mapping(e->e.getKey, Collectors.toList() ) ) ); return null; }
正如你所看到的,我尝试使用 lambda 函数将第一个映射(长整型)的值转换为整数类型键...我不知道为什么它抱怨 lambda 函数... 错误消息是: “getkey 无法解析或不是字段” “getvalue 无法解析或不是字段”
这里有一个问题。你有一些错别字。
getvalue
应该是 getvalue()
getkey
应该是 getkey()
未更正代码
Map<Integer,List<String>> res = map.entrySet().stream() .collect(Collectors.groupingBy( e->e.getValue.intValue(), Collectors.mapping(e->e.getKey, Collectors.toList() ) ) );
由对象引起的任何其他问题应包括类的声明和一些示例数据。
应包括输入和预期输出。
以上是Lamba 函数在 java groupingBy 方法(通过 Collectors 接口)中不起作用的详细内容。更多信息请关注PHP中文网其他相关文章!