java根据list中的对象多个属性排序
时间: 2023-08-05 17:08:44 浏览: 119
要根据List中对象的多个属性排序,可以使用Comparator接口和lambda表达式来实现。以下是一个示例代码:
假设有一个Student类,有两个属性:name和score
```java
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
```
现在我们有一个List<Student>,要根据name和score两个属性排序,可以这样写:
```java
List<Student> students = new ArrayList<>();
students.add(new Student("Tom", 80));
students.add(new Student("Jerry", 90));
students.add(new Student("Alice", 70));
// 根据name升序,score降序排序
students.sort(Comparator.comparing(Student::getName)
.thenComparing(Comparator.comparing(Student::getScore).reversed()));
for (Student student : students) {
System.out.println(student.getName() + " " + student.getScore());
}
```
输出结果为:
```
Alice 70
Jerry 90
Tom 80
```
以上代码中,使用了Comparator.comparing方法来获取一个比较器,然后使用thenComparing方法来进行多级排序。其中,reversed方法可以用来进行降序排序。最后使用List的sort方法来进行排序。
阅读全文