有student类,具有以下3个成员,name(String), age(int), score(float),分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。 姓名(String) 年龄(int) 分数(float) liusan 20 90.0F lisi 22 90.0F wangwu 20 99.0F sunliu 22 100.0F
时间: 2024-01-22 16:19:40 浏览: 20
使用Comparable接口代码如下:
```java
import java.util.*;
class Student implements Comparable<Student> {
private String name;
private int age;
private float score;
public Student(String name, int age, float score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public float getScore() {
return score;
}
@Override
public int compareTo(Student s) {
if (this.score != s.score) {
return Float.compare(s.score, this.score);
} else {
return Integer.compare(this.age, s.age);
}
}
}
public class Main {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("liusan", 20, 90.0F));
list.add(new Student("lisi", 22, 90.0F));
list.add(new Student("wangwu", 20, 99.0F));
list.add(new Student("sunliu", 22, 100.0F));
Collections.sort(list);
for (Student s : list) {
System.out.println(s.getName() + " " + s.getAge() + " " + s.getScore());
}
}
}
```
使用Comparator接口代码如下:
```java
import java.util.*;
class Student {
private String name;
private int age;
private float score;
public Student(String name, int age, float score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public float getScore() {
return score;
}
}
class ScoreComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
if (s1.getScore() != s2.getScore()) {
return Float.compare(s2.getScore(), s1.getScore());
} else {
return Integer.compare(s1.getAge(), s2.getAge());
}
}
}
public class Main {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("liusan", 20, 90.0F));
list.add(new Student("lisi", 22, 90.0F));
list.add(new Student("wangwu", 20, 99.0F));
list.add(new Student("sunliu", 22, 100.0F));
Collections.sort(list, new ScoreComparator());
for (Student s : list) {
System.out.println(s.getName() + " " + s.getAge() + " " + s.getScore());
}
}
}
```
两个程序的输出结果都是:
```
sunliu 22 100.0
wangwu 20 99.0
lisi 22 90.0
liusan 20 90.0
```