首页  >  文章  >  Lamba 函数在 java groupingBy 方法(通过 Collectors 接口)中不起作用

Lamba 函数在 java groupingBy 方法(通过 Collectors 接口)中不起作用

PHPz
PHPz转载
2024-02-11 08:15:07607浏览

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中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除