我有几个类,如下
class Pojo {
List<Item> items;
}
class Item {
T key1;
List<SubItem> subItems;
}
class SubItem {
V key2;
Object otherAttribute1;
}
Run Code Online (Sandbox Code Playgroud)
我想根据key1每个聚合聚合项目,子项目应按key2以下方式聚合:
Map<T, Map<V, List<Subitem>>
Run Code Online (Sandbox Code Playgroud)
Java 8 Collectors.groupingBy嵌套有什么可能吗?
我正在尝试一些东西并且中途停留
pojo.getItems()
.stream()
.collect(
Collectors.groupingBy(Item::getKey1, /* How to group by here SubItem::getKey2*/)
);
Run Code Online (Sandbox Code Playgroud)
注意:这与级联不同groupingBy,后者根据此处讨论的同一对象中的字段进行多级聚合
我有这门课.
class Assignment {
private Integer index;
private List<Quantity> quantities;
}
Run Code Online (Sandbox Code Playgroud)
然后,我有一个来自该类的对象列表.
List<Assigment> assignments = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
有没有办法创建一个Map包含索引Assignment和List<Quantity>as值的方法?
这是我到目前为止所尝试的.
assignments.stream().collect(groupingBy(Assignment::getIndex));
Run Code Online (Sandbox Code Playgroud)
但这给了我一个Map<Integer, List<Assignment>>,我想要一个Map<Integer, List<Quantity>>.
我已经尝试过使用forEach方法 - 它可以工作 - 但我确信必须有一种方法可以在一个衬里中完成它 - 或者至少只使用collect和groupingBy方法