list集合根据某个对象的属性去重
时间: 2023-11-18 13:00:44 浏览: 46
要根据某个对象的属性去重list集合,可以按照以下步骤进行操作。
首先,我们需要自定义一个比较器(Comparator)来比较两个对象的属性是否相等。比较器的作用是根据对象的属性值确定两个对象是否相等。
其次,我们可以利用Java 8的流操作,使用distinct()方法来去除集合中的重复元素。在这个方法中,我们可以使用自定义的比较器来比较两个对象。
最后,我们将得到去重后的list集合。
下面是一个例子,假设我们有一个Person对象的list集合,每个Person对象都有一个name属性。
```
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Person [name=" + name + "]";
}
}
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("John"));
personList.add(new Person("Jane"));
personList.add(new Person("John")); // 添加重复元素
List<Person> distinctList = personList.stream().distinct(new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName()); // 比较name属性
}
}).toList();
System.out.println(distinctList);
}
}
```
运行这段代码,我们将得到去重后的list集合:[Person [name=Jane], Person [name=John]]。