Java 8 lambdas组列表进入映射
我想获取List
并return
Map<String, List>
,其中Map
的键是Pojo
的String
值,我们称之为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())));