首頁  >  文章  >  Lamba 函數在 java groupingBy 方法(透過 Collectors 介面)中不起作用

Lamba 函數在 java groupingBy 方法(透過 Collectors 介面)中不起作用

PHPz
PHPz轉載
2024-02-11 08:15:07642瀏覽

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刪除