Java list 根据字段排序去重
时间: 2023-07-07 08:30:21 浏览: 160
在 Java 中,可以使用 Comparator 和 TreeSet 来实现根据字段排序去重的功能。假设有一个包含对象的 List,其中对象包含一个字段 field,可以按照如下方式进行排序去重:
```java
// 定义对象类
class MyClass {
private int field;
public MyClass(int field) {
this.field = field;
}
public int getField() {
return field;
}
// 重写 equals 和 hashCode 方法
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof MyClass)) {
return false;
}
MyClass other = (MyClass) obj;
return field == other.field;
}
@Override
public int hashCode() {
return Objects.hash(field);
}
}
// 对 List 进行排序去重
List<MyClass> myList = new ArrayList<>();
myList.add(new MyClass(3));
myList.add(new MyClass(1));
myList.add(new MyClass(2));
// 按照 field 字段进行排序
myList.sort(Comparator.comparingInt(MyClass::getField));
// 去重
List<MyClass> uniqueList = new ArrayList<>(new TreeSet<>(myList));
```
这里的 Comparator 接口用于指定排序的字段,TreeSet 用于实现去重,需要重写对象的 equals 和 hashCode 方法以保证去重的正确性。排序后的列表可以直接传递给 TreeSet 构造函数,去重后的列表可以使用 ArrayList 构造函数进行初始化。
阅读全文