Java 8 中的巢狀(多層)Group By
經常需要根據多個鍵將物件進行多層分組。在本例中,我們有一組表示資料的類,涉及帶有鍵的項目列表和也帶有鍵的子項目列表。目標是按鍵將項目分組,對於每個聚合,進一步按鍵對子項目進行分組,從而產生嵌套映射。
使用 Java 8 的 Collectors.groupingBy,我們可以透過使用組合來實現此目的flatMap 和自訂平面映射收集器。我們首先使用 Stream.flatMap 建立一個臨時對來保存專案和子專案的組合。
或者,我們可以透過使用平面映射收集器來避免建立臨時對象,不幸的是,這不會Java 9 之前可用。透過這種方法,程式碼可以簡化為:
對於可能不想等待 Java 9 的用戶,可以實現自訂平面映射收集器:
以上是如何在 Java 8 中使用 Collectors.groupingBy 實作巢狀分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!