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

问题描述 投票:0回答:1

我创建了第一个地图,其中键是体育课程的字符串槽,值是每个槽的参与者数量。现在我想创建第二张地图,其键和值基本上颠倒,因此键将是参与者的数量,值将是具有该参与者数量的插槽列表。我编写了这段代码,但我不知道为什么它在第二个 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 无法解析或不是字段”

java java-stream
1个回答
0
投票

这里有一个问题。你有一些错别字。

  • 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() ) ) )
© www.soinside.com 2019 - 2024. All rights reserved.