java8两个List集合相互对比里面的对象一样,对比里面的一个字段的值是否相等,相等话就可以,怎么写
时间: 2024-12-19 17:24:59 浏览: 4
Java比较两个List的值是否相等的方法
在Java 8中,你可以使用Stream API来进行这样的比较。假设你有两个`List<MyObject>`,其中`MyObject`有一个可以用来比较的字段,比如`fieldToCompare`。下面是一个示例:
```java
import java.util.List;
import java.util.stream.Collectors;
class MyObject {
private String fieldToCompare;
// getters and setters...
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
MyObject other = (MyObject) obj;
return Objects.equals(fieldToCompare, other.fieldToCompare);
}
// hashCode implementation is required for Stream operations
@Override
public int hashCode() {
return Objects.hash(fieldToCompare);
}
}
public List<MyObject> compareLists(List<MyObject> list1, List<MyObject> list2) {
return list1.stream()
.filter(list2::contains) // 检查元素是否存在于list2
.filter(list1Obj -> list2.stream()
.anyMatch(obj -> obj.fieldToCompare.equals(list1Obj.fieldToCompare))) // 比较字段值
.collect(Collectors.toList());
}
```
这个方法会返回一个新的列表,包含那些在两个列表中`fieldToCompare`字段值相等的`MyObject`实例。
阅读全文