次のオブジェクトがあります。
public class Item {
String value;
List<Person> owners;
Person creator;
}
public class Person {
String name;
int id;
Person manager;
}
今、私は3つのアイテムオブジェクトを含むリストを持っています:
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 API と Collector API を使用すると、最初に Item から manager へのマップを作成しMap<Item, List<Person>>
、次にマッピングを逆にすることができると思います。しかし、ストリームとコレクターのみを使用して必要なマッピングを作成する方法はありますか?