Вложенная (многоуровневая) группа Java 8
У меня есть несколько классов, как показано ниже
class Pojo {
List<Item> items;
}
class Item {
T key1;
List<SubItem> subItems;
}
class SubItem {
V key2;
Object otherAttribute1;
}
Я хочу объединить элементы на основеkey1
и для каждой агрегации, подпункты должны быть агрегированыkey2
следующим образом:
Map<T, Map<V, List<Subitem>>
Как это возможно с Java 8Collectors.groupingBy
вложенности?
Я пытался что-то и застрял на полпути
pojo.getItems()
.stream()
.collect(
Collectors.groupingBy(Item::getKey1, /* How to group by here SubItem::getKey2*/)
);
Примечание: это не то же самое, что каскадgroupingBy
который выполняет многоуровневую агрегацию на основе полей в том же объекте, что и обсуждалосьВот