Java8 合并 List<Map>,为一个大Map

DYBOY

关注

阅读 107

2022-03-13

-----数据
[{gailun=刘备},{zhaoxin=关羽},{ruiwen=张飞}]
 
-----目标
{gailun=刘备,zhaoxin=关羽,ruiwen=张飞}

第一种

List<Map<String,Object>> lists=new ArrayList<>();
Map<String, Object> merged = new HashMap<>();
lists.forEach(merged::putAll);

第二种

// 不想覆盖,保留最初的值: 
List<Map<String,Object>> lists=new ArrayList<>();
lists.stream().flatMap(m -> m.entrySet().stream())
              .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a));
              
// 覆盖key相同的值:
List<Map<String,Object>> lists=new ArrayList<>();
lists.stream().flatMap(m -> m.entrySet().stream())
              .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b)); 

精彩评论(0)

0 0 举报