java8 listmap 去重合并
时间: 2023-04-21 13:00:14 浏览: 145
Java中对List去重 Stream去重的解决方法
Java8可以使用stream和lambda表达式来对List<Map>进行去重合并操作。
具体步骤如下:
1. 使用stream将List<Map>转换为Map,其中key为Map中的某个属性值,value为Map对象本身。
2. 使用Map的merge方法将重复的key合并为一个Map对象。
3. 将Map转换为List<Map>。
示例代码如下:
```
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("id", 1);
map1.put("name", "张三");
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 2);
map2.put("name", "李四");
list.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("id", 1);
map3.put("name", "王五");
list.add(map3);
List<Map<String, Object>> result = new ArrayList<>(list.stream()
.collect(Collectors.toMap(
m -> m.get("id").toString(),
m -> m,
(m1, m2) -> {
m1.putAll(m2);
return m1;
}
)).values());
System.out.println(result);
```
输出结果为:
```
[{id=1, name=王五}, {id=2, name=李四}]
```
其中,id为1的两个Map对象被合并为一个,name属性值为"张三"被覆盖为"王五"。
阅读全文