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- –