两个listmap合并去重
时间: 2024-01-04 22:52:22 浏览: 119
详解Java8合并两个Map中元素的正确姿势
你可以使用Java的Stream API来合并两个List<Map>并去重。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list1 = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("id", 1);
map1.put("name", "John");
map1.put("age", 25);
list1.add(map1);
List<Map<String, Object>> list2 = new ArrayList<>();
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 2);
map2.put("name", "Jane");
map2.put("age", 30);
list2.add(map2);
List<Map<String, Object>> mergedList = mergeAndDistinct(list1, list2);
for (Map<String, Object> map : mergedList) {
System.out.println(map);
}
}
public static List<Map<String, Object>> mergeAndDistinct(List<Map<String, Object>> list1, List<Map<String, Object>> list2) {
List<Map<String, Object>> mergedList = new ArrayList<>(list1);
mergedList.addAll(list2);
List<Map<String, Object>> distinctList = mergedList.stream()
.collect(Collectors.toMap(
map -> map.get("id"),
map -> map,
(map1, map2) -> map1
))
.values()
.stream()
.collect(Collectors.toList());
return distinctList;
}
}
```
在上述代码中,我们定义了两个包含Map的List,即list1和list2。我们使用`addAll()`方法将两个List合并为一个mergedList。然后,我们使用Stream API对mergedList进行操作,使用`Collectors.toMap()`方法按照id字段进行去重,并将结果转换为List。最后,我们打印出合并且去重后的结果。
注意:在这个示例中,假设每个Map对象都有一个名为"id"的字段用于唯一标识。你可以根据实际需求调整代码。
阅读全文