Collections.sort的自定义排序
时间: 2024-02-05 13:45:31 浏览: 129
可以通过实现Comparator接口,并在Comparator的compare方法中定义自定义的比较规则来实现Collections.sort的自定义排序。在调用Collections.sort时,将自定义的Comparator作为参数传入即可实现自定义排序。例如,以下代码实现了对一个Animal类的List进行按年龄升序排序的自定义排序:
```
class Animal {
String name;
int age;
// 省略getter和setter方法
}
class AgeComparator implements Comparator<Animal> {
public int compare(Animal a1, Animal a2) {
return a1.getAge() - a2.getAge();
}
}
public static void main(String[] args) {
List<Animal> animalList = new ArrayList<>();
// 省略对animalList进行初始化的代码
Collections.sort(animalList, new AgeComparator());
}
```
相关问题
collections.sort默认排序
collections.sort默认排序是按照元素的自然顺序进行排序,对于数字类型的元素,是按照从小到大的顺序排序,对于字符串类型的元素,是按照字典序进行排序。如果需要自定义排序规则,可以通过实现Comparator接口来实现。
Collections.sort()自定义排序用法举例
当使用Collections.sort()方法进行自定义排序时,需要实现接口Comparator并重写compare()方法。以下是一个例子:
假设我们有一个类Person,其中包含姓名和年龄两个属性:
```
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
现在我们想要按照年龄从小到大排序,可以这样实现:
```
List<Person> personList = new ArrayList<>();
personList.add(new Person("Jack", 25));
personList.add(new Person("Lucy", 18));
personList.add(new Person("Tom", 30));
// 自定义排序
Collections.sort(personList, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
});
// 输出排序结果
for (Person person : personList) {
System.out.println(person.getName() + ":" + person.getAge());
}
```
输出结果:
```
Lucy:18
Jack:25
Tom:30
```
在这个例子中,我们重写了compare()方法,实现了按照年龄从小到大排序。然后使用Collections.sort()方法对personList进行排序并输出结果。
阅读全文