对自定义list对象排序
时间: 2023-07-22 11:15:05 浏览: 48
对自定义list对象排序也可以使用Collections.sort()方法,但是需要实现Comparable接口或者传入Comparator对象进行排序。下面给出两种实现方式。
1. 实现Comparable接口
如果自定义的对象实现了Comparable接口,那么可以直接使用Collections.sort()方法进行排序。示例代码如下:
```java
public class Person implements Comparable<Person> {
private String name;
private int age;
// 构造函数、getter和setter方法省略
@Override
public int compareTo(Person o) {
// 按照年龄从小到大排序
return Integer.compare(this.age, o.getAge());
}
}
// 对Person对象的List进行排序
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 20));
personList.add(new Person("Bob", 18));
personList.add(new Person("Charlie", 22));
Collections.sort(personList);
System.out.println(personList);
```
2. 传入Comparator对象
如果自定义的对象没有实现Comparable接口,或者需要按照不同的方式进行排序,可以传入Comparator对象进行排序。示例代码如下:
```java
public class Person {
private String name;
private int age;
// 构造函数、getter和setter方法省略
}
// 按照年龄从大到小排序的Comparator
Comparator<Person> ageComparator = Comparator.comparingInt(Person::getAge).reversed();
// 对Person对象的List进行排序
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 20));
personList.add(new Person("Bob", 18));
personList.add(new Person("Charlie", 22));
Collections.sort(personList, ageComparator);
System.out.println(personList);
```
注意,在传入Comparator对象进行排序时,需要使用Comparator.comparing()方法指定排序字段,并使用reversed()方法进行降序排序。