【发布时间】:2015-10-12 17:11:52
【问题描述】:
我有以下物品:
public class Item {
String value;
List<Person> owners;
Person creator;
}
public class Person {
String name;
int id;
Person manager;
}
现在我有一个包含 3 个 Item 对象的列表:
i1 -> {value="1", owners=[p1, p2, p3], creator=p4}
i2 -> {value="2", owners=[p2, p3], creator=p5}
i3 -> {value="3", owners=[p5], creator=p1}
Person 对象如下:
p1 -> {manager=m1, ...}
p2 -> {manager=m2, ...}
p3 -> {manager=m3, ...}
p4 -> {manager=m2, ...}
p5 -> {manager=m1, ...}
我想根据所有者和创建者的管理者对 Item 对象流进行分组。结果Map<Person, List<Item>> 应如下所示:
{
m1: [i1, i2, i3],
m2: [i1, i2],
m3: [i1, i2]
}
我认为使用 Stream 和 Collector API,我可以制作从 Item 到管理器的映射,首先是 Map<Item, List<Person>>,然后反向映射。但是有什么方法可以只使用 Stream 和 Collectors 来制作我想要的映射吗?
【问题讨论】:
标签: java-8 java-stream collectors