java中两个数组对象List<Map<String, Object>>根据某个字段进行差集
时间: 2024-10-19 16:15:07 浏览: 40
Java中List集合对象去重及按属性去重的8种方法
5星 · 资源好评率100%
在Java中,如果你有两个`List<Map<String, Object>>`类型的数组,并想根据其中的一个共同字段(假设这个字段叫`fieldName`)来进行差集操作,你需要先将这两个列表转换为集合,然后使用Java 8提供的流(Stream)API来实现。
首先,你可以创建一个通用的函数,接受两个这样的列表作为参数:
```java
import java.util.*;
import java.util.stream.*;
public List<Map<String, Object>> difference(List<Map<String, Object>> list1, List<Map<String, Object>> list2) {
Set<Map<String, Object>> set1 = list1.stream()
.collect(Collectors.toSet());
// 使用filter和Collectors.toList()过滤list2中不在set1中的元素
return list2.stream()
.filter(map -> !set1.contains(map))
.collect(Collectors.toList());
}
```
这个函数首先将`list1`转换为不可变的集合`set1`,然后使用`filter`方法从`list2`中筛选出那些在`set1`中不存在的元素,最后收集到一个新的列表返回。
使用这个函数,你可以像这样获取两个列表的差集:
```java
List<Map<String, Object>> diffList = difference(list1, list2);
阅读全文