我的学生班只有三个属性 - 年龄,性别和姓名。
我有一个类似Map<String, Student>
的Map,其中key是一个UUID字符串,充当学生的标识符。
现在我想将此地图转换为另一种模式地图 - Map<String,List<String>>
。在此地图中,密钥可以是学生的性别,价值将是与该性别对应的UUID列表。
我可以使用pre-Java8语法实现这一点,但我试图通过Java8流API和lambda表达式来实现。请帮助解决这个问题。
我尝试了什么 -
Map<String, Student> map;
map.entrySet().stream().collect(e -> e.getValue().getSex(), ???how to get list of keys here???)
我可以正确设置目标地图的键,但我很难设置值。
答案 0 :(得分:3)
map.entrySet().stream()
.collect(Collectors.groupingBy(entry -> entry.getValue().getSex(),
Collectors.mapping(entry -> entry.getKey(), Collectors.toList())));