使用Collectors.groupingby创建一个集合的映射

sim*_*005 9 java grouping set java-stream

我知道如何创建一个Map<T, List<U>>,使用Collectors.groupingBy:

Map<Key, List<Item>> listMap = items.stream().collect(Collectors.groupingBy(s->s.key));

如何修改要创建的代码Map<Key, Set<Item>>?或者我可以不使用它stream,因此必须使用for循环等手动创建它?

Rus*_*lan 13

使用Collectors.toSet()在下游groupingBy:

Map<Key, Set<Item>> map = items.stream()
            .collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)


Rav*_*ala 5

您必须像这样使用下游收集器:

Map<Key, Set<Item>> listMap = items.stream()
    .collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)