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中文網其他相關文章!