Java中的list根据对象的某个属性的值去重 详细代码
时间: 2023-08-21 14:08:05 浏览: 104
java8从list集合中取出某一属性的值的集合案例
5星 · 资源好评率100%
你可以使用Java中的`HashSet`来实现List根据对象的某个属性值去重。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getters and setters
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
}
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("John", 25));
personList.add(new Person("John", 25));
personList.add(new Person("Alice", 30));
personList.add(new Person("Bob", 35));
personList.add(new Person("Alice", 30));
Set<Person> uniquePersons = new HashSet<>(personList);
List<Person> distinctPersonList = new ArrayList<>(uniquePersons);
for (Person person : distinctPersonList) {
System.out.println(person.getName() + " - " + person.getAge());
}
}
}
```
在上面的代码中,我们定义了一个`Person`类,它有一个属性`name`和一个属性`age`。重写了`equals()`和`hashCode()`方法,使得两个`Person`对象根据`name`和`age`判断是否相等。
在`main()`方法中,我们创建了一个包含重复元素的`personList`列表。然后,我们使用`HashSet`来去除重复元素,因为`HashSet`不允许重复元素。最后,我们将去重后的元素存放到`distinctPersonList`列表中,并输出每个人的姓名和年龄。
运行上述代码,输出结果将为:
```
Alice - 30
Bob - 35
John - 25
```
这样就实现了根据对象的某个属性值去重的功能。
阅读全文