0
可以說我有對象的列表看起來像這樣:使用GROUPBY到轉換列表映射
Foo
int id
Owner owner
int targetId
我想這個列表轉化成Map<Owner, Set<Integer>>
ownerToTargetIds映射將必須對每個關鍵在Foo對象列表中找到唯一所有者,併爲該所有者的每個foo對象中的所有targetIds賦值。例如:
Foo a {1, 2, 3}
Foo b {2, 2, 4}
Foo c {3, 2, 5}
在上面,你會transoform這個名單與主要= 2,值{3,4,5}映射=設置。
我試圖使用流分組功能去的地步,我可以從所有者獲得映射到整個記錄,但,這並不真正的工作:
Map<Owner, List<Foo>> userToTargetIds = foo.get().stream()
.collect(toMap(Foo::getTargetId));
的Collectors.groupingBy API文檔有一個例子做的正是你問:http://docs.oracle.com/javase/8/docs/api/的java/util的/流/ Collecto rs.html#groupingBy-java.util.function.Function-java.util.stream.Collector- –