java主次条件排序
时间: 2023-07-01 10:12:32 浏览: 42
Java中可以使用Comparator接口来实现主次条件排序。Comparator接口定义了一个比较器方法compare,通过比较方法返回值的正负来实现排序。下面是一个示例代码:
```java
import java.util.*;
class Student {
private String name;
private int age;
private double score;
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getScore() {
return score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
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", 19, 88));
students.add(new Student("Alice", 20, 92));
// 按照分数从高到低排序,分数相同按照年龄从小到大排序
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if (o1.getScore() != o2.getScore()) {
return (int) (o2.getScore() - o1.getScore());
}
return o1.getAge() - o2.getAge();
}
});
for (Student student : students) {
System.out.println(student);
}
}
}
```
运行结果:
```
Student{name='Alice', age=20, score=92.0}
Student{name='Tom', age=18, score=90.0}
Student{name='Jerry', age=19, score=88.0}
```
在上面的示例中,我们定义了一个Student类,并实现了按照分数从高到低排序,分数相同按照年龄从小到大排序的规则。我们使用了Comparator接口,并通过匿名内部类的方式来实现compare方法。最后,使用Collections.sort方法对List进行排序。