我的类定义为Entry
-
public class Entry {
private String key;
private String Value;
// getters and setters
// equals hashcode toString
}
我从数据库中获得了Entry
个对象的列表。
我想根据键对它们进行分组,结果Map的值应为Set<value>
。
我尝试了并得到下面的代码。
Map<String, Set<Entry>> groupedEntries =
entryList.findAll()
.stream()
.collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(), Collectors.toSet()));
此代码的问题是结果类型为Map<String, Set<Entry>>
,但我想成为Map<String, Set<String>>
。
是否可以在一次收集中执行此操作?
答案 0 :(得分:7)
使用mapping
收集器:
.collect(Collectors.groupingBy(ek -> ek.getKey().toLowerCase(),
Collectors.mapping(Entry::getValue, Collector.toSet())));