繁体   English   中英

使用groupBy转换要映射的列表

[英]Using groupBy to transform list to map

可以说我有一个看起来像这样的对象列表:

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}

在上面,您可以将该列表转换为键= 2,值= Set {3,4,5}的Map。

我尝试使用流中的分组功能来达到从所有者到整个记录的映射的目的,但这实际上不起作用:

Map<Owner, List<Foo>> userToTargetIds = foo.get().stream()
                    .collect(toMap(Foo::getTargetId));

正如JB Nizet所说:RTM

但在这里被摘录:

Map<Owner, Set<Integer>> userToTargetIds
         = fooList.stream().collect(groupingBy(Foo::getOwner,
                                              mapping(Foo::getTargetId, toSet())));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM