定义学生类,包含学号、姓名、年龄三个属性。为学生定义自然序(按学号升序排 序),再为学生定义比较器(按年龄降序排序)。创建5个元素的学生数组,分别按自然 序和比较器顺序排序后输出。
时间: 2024-02-15 13:03:23 浏览: 12
下面是Java语言的实现代码:
```java
import java.util.Arrays;
import java.util.Comparator;
class Student implements Comparable<Student> {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public int compareTo(Student o) {
return this.id - o.id;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
class AgeComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o2.getAge() - o1.getAge();
}
}
public class Main {
public static void main(String[] args) {
Student[] students = new Student[5];
students[0] = new Student(1, "张三", 18);
students[1] = new Student(3, "李四", 19);
students[2] = new Student(2, "王五", 20);
students[3] = new Student(5, "赵六", 21);
students[4] = new Student(4, "钱七", 22);
// 按自然序排序
Arrays.sort(students);
System.out.println("按自然序排序后:");
for (Student student : students) {
System.out.println(student);
}
// 按比较器排序
Arrays.sort(students, new AgeComparator());
System.out.println("按比较器排序后:");
for (Student student : students) {
System.out.println(student);
}
}
}
```
输出结果为:
```
按自然序排序后:
Student{id=1, name='张三', age=18}
Student{id=2, name='王五', age=20}
Student{id=3, name='李四', age=19}
Student{id=4, name='钱七', age=22}
Student{id=5, name='赵六', age=21}
按比较器排序后:
Student{id=4, name='钱七', age=22}
Student{id=5, name='赵六', age=21}
Student{id=2, name='王五', age=20}
Student{id=3, name='李四', age=19}
Student{id=1, name='张三', age=18}
```