在Java流中使用collectors.groupingBy修改返回的Map值类型

Raj*_*jan 4 java java-8

我的课程定义低于Entry-

public class Entry {
    private String key;
    private String Value;
    // getters and setters
    // equals hashcode toString
}
Run Code Online (Sandbox Code Playgroud)

Entry从数据库中获取了对象列表.我想根据结果Map的键和值对它们进行分组Set<value>.

我试过并最终得到以下代码.

Map<String, Set<Entry>> groupedEntries =  
        entryList.findAll()
                 .stream()
                 .collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(), Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)

这段代码的问题是结果类型,Map<String, Set<Entry>>但我想成为Map<String, Set<String>>.

是否有可能在单一收集中这样做?

Ous*_* D. 7

使用mapping收藏家:

.collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(), 
                  Collectors.mapping(Entry::getValue, Collector.toSet())));
Run Code Online (Sandbox Code Playgroud)