java实现list根据某个字段和时间去重
时间: 2023-10-04 09:11:40 浏览: 139
List对象去重和按照某个字段排序的实现方法
1. 根据某个字段去重
可以重写对象的equals和hashCode方法,对比对象的某个字段是否相同,如果相同则视为同一个对象。例如,假设有一个Person对象,根据id字段去重:
```
public class Person {
private String id;
private String name;
private Date birth;
// 省略构造方法和getter/setter方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(id, person.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
```
然后将Person对象添加到List中,使用HashSet去重:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到personList中
HashSet<Person> personSet = new HashSet<>(personList);
personList.clear();
personList.addAll(personSet);
```
2. 根据某个字段和时间去重
和根据某个字段去重类似,只需要在equals方法中加入时间的比较即可。例如,假设根据id和birth字段去重:
```
public class Person {
private String id;
private String name;
private Date birth;
// 省略构造方法和getter/setter方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(id, person.id) &&
Objects.equals(birth, person.birth);
}
@Override
public int hashCode() {
return Objects.hash(id, birth);
}
}
```
然后将Person对象添加到List中,使用HashSet去重:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到personList中
HashSet<Person> personSet = new HashSet<>(personList);
personList.clear();
personList.addAll(personSet);
```
阅读全文