首頁  >  文章  >  Java  >  如何在 Java 8 中使用 Collectors.groupingBy 實作巢狀分組?

如何在 Java 8 中使用 Collectors.groupingBy 實作巢狀分組?

Barbara Streisand
Barbara Streisand原創
2024-10-24 08:54:30163瀏覽

How to Implement Nested Grouping in Java Using Collectors.groupingBy in Java 8?

Java 8 中的巢狀(多層)Group By

經常需要根據多個鍵將物件進行多層分組。在本例中,我們有一組表示資料的類,涉及帶有鍵的項目列表和也帶有鍵的子項目列表。目標是按鍵將項目分組,對於每個聚合,進一步按鍵對子項目進行分組,從而產生嵌套映射。

使用 Java 8 的 Collectors.groupingBy,我們可以透過使用組合來實現此目的flatMap 和自訂平面映射收集器。我們首先使用 Stream.flatMap 建立一個臨時對來保存專案和子專案的組合。

或者,我們可以透過使用平面映射收集器來避免建立臨時對象,不幸的是,這不會Java 9 之前可用。透過這種方法,程式碼可以簡化為:

對於可能不想等待 Java 9 的用戶,可以實現自訂平面映射收集器:

以上是如何在 Java 8 中使用 Collectors.groupingBy 實作巢狀分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn