我想要List<Pojo>
和return
Map<String, List<Pojo>>
Map
的{{1}}个String
值,Pojo
,我们称之为String key
。
澄清一下,给出以下内容:
Pojo 1:Key:值:1
Pojo 2:Key:值:2
Pojo 3:Key:b值:3
Pojo 4:Key:b值:4
我想要Map<String, List<Pojo>>
keySet()
大小为2,其中键“a”包含Pojos 1和2,而键“b”包含pojos 3和4。
如何使用Java 8 lambdas最好地实现这一目标?
答案 0 :(得分:57)
似乎简单的groupingBy
变体就是您所需要的:
Map<String, List<Pojo>> map = pojos.stream().collect(Collectors.groupingBy(Pojo::getKey));
答案 1 :(得分:16)
另外,如果你想要返回一个类似的地图,但是你想要将地图的值作为Pojo的某些属性而不是整个Pojo,你会这样做:
Map<String, List<String>> map = pojos.stream()
.collect(
Collectors.groupingBy(
Employee::getKey, Collectors.mapping(
Pojo::getSomeStringProperty, Collectors.toList())));