Java根据list集合中两个字段判重
时间: 2023-02-19 16:06:47 浏览: 143
在 Java 中可以使用 List.contains() 方法来判断一个元素是否在列表中。
但是,如果你想要根据列表中的两个字段进行判重,就需要重写 equals() 和 hashCode() 方法。
假设你有一个 Employee 类,有 name 和 age 两个字段,并且你希望根据这两个字段判断重复,那么你可以这样做:
```
class Employee {
private String name;
private int age;
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return age == employee.age &&
Objects.equals(name, employee.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
```
然后你就可以使用 List.contains() 方法来判断列表中是否有重复的元素了:
```
List<Employee> employees = new ArrayList<>();
employees.add(new Employee("John", 30));
employees.add(new Employee("Jane", 25));
Employee duplicate = new Employee("John", 30);
if (employees.contains(duplicate)) {
System.out.println("Found a duplicate!");
}
```
注意,上述代码中的 equals() 和 hashCode() 方法是必须的,因为 List.contains() 方法内部使用了 hashCode() 方法来比较元素是否相等。
阅读全文