簡體   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