2017-06-19 81 views
-2

我的学生类只有三个属性 - 年龄,性别和姓名。 我有一个地图,如Map<String, Student>其中key是一个UUID字符串,充当学生的标识符。转换列表<Students>到地图<K, List<V>>

现在我想将此地图转换为另一个地图模式 - 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???)

我能够正确地设定目标映射的关键,但我努力设置的值。

+6

你到目前为止尝试过什么?什么不工作? –

+0

那些谁downvoting,请给我一个解决方案以及。只是downvote没有帮助 –

回答

3
map.entrySet().stream() 
      .collect(Collectors.groupingBy(entry -> entry.getValue().getSex(), 
        Collectors.mapping(entry -> entry.getKey(), Collectors.toList()))); 
+0

这个工程。谢谢。 –

相关问题