在list列表中,对多个对象,中多个字段进行java去重复,
时间: 2024-10-24 19:05:08 浏览: 18
List集合多个复杂字段判断去重的案例
在Java中,如果你有一个包含多种对象的List,并且你想去除这些对象基于多个字段(属性)的重复项,你可以使用自定义比较器(Comparator)配合HashSet或者LinkedHashSet。这是因为Set数据结构不允许有重复元素。
以下是一个简单的示例,假设我们有一个Person类,有两个字段name和age:
```java
import java.util.*;
class Person {
String name;
int age;
// constructor, getters and setters...
}
public class Main {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
// 假设这里填充一些Person对象
// 自定义比较器
Comparator<Person> comparator = (p1, p2) -> {
if (p1.getName().equals(p2.getName())) {
return Integer.compare(p1.getAge(), p2.getAge());
}
return p1.getName().compareTo(p2.getName());
};
// 使用Set(去重)并保持顺序(如果需要)
Set<Person> uniqueList = new LinkedHashSet<>(list.stream()
.sorted(comparator)
.collect(Collectors.toList()));
System.out.println(uniqueList);
}
}
```
在这个例子中,我们首先按照名字排序,如果有相同名字的人,再根据年龄进行排序。然后将排序后的列表转换成Set,因为Set会自动去除重复项。
阅读全文