java中list集合中是对象怎么根据对象多个的值去重
时间: 2024-03-27 15:40:25 浏览: 65
如何去掉list集合中重复的元素?.docx
在Java中,我们可以通过实现`equals()`和`hashCode()`方法来对对象进行去重,具体步骤如下:
1. 定义一个对象类,并在其中定义多个属性。
2. 在对象类中实现`equals()`和`hashCode()`方法,用于指定去重的关键字。
3. 创建一个包含多个对象的列表。
4. 使用`HashSet`对列表进行去重操作。
以下是示例代码:
```java
public class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public boolean equals(Object obj) {
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age &&
Objects.equals(name, person.name) &&
Objects.equals(gender, person.gender);
}
@Override
public int hashCode() {
return Objects.hash(name, age, gender);
}
}
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 20, "male"));
personList.add(new Person("Jerry", 22, "male"));
personList.add(new Person("Lily", 20, "female"));
personList.add(new Person("Tom", 20, "male"));
personList.add(new Person("Lily", 20, "female"));
Set<Person> uniquePersonSet = new HashSet<>(personList);
List<Person> uniquePersonList = new ArrayList<>(uniquePersonSet);
System.out.println(uniquePersonList);
```
在上面的示例代码中,我们定义了一个Person类,并创建了一个包含多个Person对象的列表personList。我们在Person类中实现了`equals()`和`hashCode()`方法,用于指定去重的关键字,即按照name、age、gender属性进行去重。我们使用`HashSet`对personList进行去重操作,并将结果存储在uniquePersonSet中。最后将uniquePersonSet转换为List类型,输出去重后的Person对象列表。
阅读全文