collections.sort()中重写compareor是什么意思,怎么自定义这个排序
时间: 2023-06-24 08:07:47 浏览: 164
`Collections.sort()` 是 Java 中的一个排序方法,它可以对 `List` 集合中的元素进行排序。`sort()` 方法有两种重载形式,其中一种可以接受一个 `Comparator` 对象作为参数,用于自定义元素的排序方式。
`Comparator` 接口中有一个 `compare()` 方法,用于比较两个对象的大小。如果要自定义排序,就需要实现 `Comparator` 接口,并重写 `compare()` 方法。在重写 `compare()` 方法时,需要按照自己的排序规则来比较两个对象的大小,然后返回一个整数值表示它们的大小关系。
例如,假设有一个 `Person` 类,它有 `name` 和 `age` 两个属性,如果要按照年龄从小到大排序,则可以自定义一个 `Comparator` 对象:
```java
public class PersonAgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
}
```
然后在使用 `Collections.sort()` 方法时,将这个 `Comparator` 对象作为参数传入:
```java
List<Person> personList = new ArrayList<>();
// 添加 personList 中的元素
Collections.sort(personList, new PersonAgeComparator());
```
这样就可以按照年龄从小到大对 `personList` 中的元素进行排序了。同样的道理,可以按照其他属性或者多个属性进行排序,只需要实现不同的 `Comparator` 对象即可。
阅读全文