您需要flatMap
在每个Map的条目集中创建一个Stream
.然后,可以使用收集groupingBy(classifier, downstream)
器收集此Stream :分类器返回条目的键,下游收集器将条目映射到其值并将其收集到a中List
.
Map> map = list.stream() .flatMap(m -> m.entrySet().stream()) .collect(groupingBy(Map.Entry::getKey, mapping(Map.Entry::getValue, toList())));
此代码需要以下静态导入:
import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.mapping; import static java.util.stream.Collectors.toList;
以您的完整示例:
public static void main(String[] args) { Mapm1 = new HashMap<>(); m1.put("A", 1l); m1.put("B", 100l); Map m2 = new HashMap<>(); m2.put("A", 10l); m2.put("B", 20l); m2.put("C", 100l); List