java list 2个集合根据对象中某个字段对比找出差集
时间: 2024-10-23 07:20:45 浏览: 12
在Java中,如果你有两个List集合,比如List甲和List乙,你想找出两个集合之间的差集,即甲中有而乙中没有,或者乙中有而甲中没有的对象。你可以按照以下步骤操作:
1. 首先,你需要创建一个新的List来存放结果,假设这个新列表叫作`diffSet`。
```java
List<Object> diffSet = new ArrayList<>();
```
2. 使用Java 8的Stream API来进行集合操作。可以遍历其中一个集合(这里假设我们从甲开始),然后检查另一个集合乙中是否包含当前元素。如果不包含,就将该对象添加到`diffSet`中。
```java
List<Object> listA = ...; // List甲
List<Object> listB = ...; // List乙
diffSet.addAll(listA.stream()
.filter(listB::contains) // 如果不在listB中,则过滤掉
.noneMatch(listB::contains) // 只有当两者都不匹配才添加
.collect(Collectors.toList()));
```
这里的`filter(listB::contains)`会筛选出listA中存在的元素,`noneMatch(listB::contains)`则判断剩下的元素都不在listB中。
3. 最后,`diffSet`就是你要找的差集。
注意:这种方法依赖于你想要比较的字段能通过`equals()`方法正确地确定两个对象是否相等。如果对象不是简单类型,并且字段上的`equals()`方法不够精细,你可能需要自定义`equals`和`hashCode`方法。
阅读全文