用Comparator.comparing()实现二级排序
时间: 2023-12-01 07:43:26 浏览: 51
可以使用Comparator.comparing()方法实现二级排序,具体步骤如下:
1.首先定义一个Comparator对象,使用comparing()方法对第一关键字进行排序,然后使用thenComparing()方法对第二关键字进行排序。
2.在定义Comparator对象时,需要使用lambda表达式或方法引用来指定排序规则。
下面是一个示例代码,演示如何使用Comparator.comparing()实现二级排序:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Tom",18, 90));
students.add(new Student("Jerry", 20, 80));
students.add(new Student("Alice", 18, 95));
students.add(new Student("Bob", 19, 85));
// 使用Comparator.comparing()实现二级排序
Comparator<Student> comparator = Comparator.comparing(Student::getAge)
.thenComparing(Student::getScore, Comparator.reverseOrder());
Collections.sort(students, comparator);
// 输出排序结果
for (Student student : students) {
System.out.println(student);
}
}
}
class Student {
private String name;
private int age;
private int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getScore() {
return score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
```
输出结果为:
```
Student{name='Alice', age=18, score=95}
Student{name='Tom', age=18, score=90}
Student{name='Bob', age=19, score=85}
Student{name='Jerry', age=20, score=80}
```