Java 8 lambdas组列表进入映射

我想获取Listreturn Map<String, List> ,其中Map的键是PojoString值,我们称之为String key

澄清一下,给出以下内容:

Pojo 1:Key:值:1

Pojo 2:Key:值:2

Pojo 3:键:b值:3

Pojo 4:键:b值:4

我想要一个Map<String, List> with keySet() size 2,其中键“a”具有Pojos 1和2,键“b”具有pojos 3和4。

我怎么能用Java 8 lambdas最好地实现这个目标?

看来简单的groupingBy变体就是你需要的:

 Map> map = pojos.stream().collect(Collectors.groupingBy(Pojo::getKey)); 

此外,如果你想返回一个类似的地图而不是整个Pojo,你想要地图的值是Pojo的一些属性,你会这样做:

 Map> map = pojos.stream() .collect( Collectors.groupingBy( Employee::getKey, Collectors.mapping( Pojo::getSomeStringProperty, Collectors.toList())));