某学生信息管理系统中需要对学生对象数组进行排序(学生对象包含:学号,姓名,年龄,年级排名等属性),现在需要对该数组进行排序,有时候需要按学号进行排序,有时需要按年龄进行排序,以后可能还有其他排序需求,请实现此排序功能并打印排序结果,要求遵循面向对象设计原则
时间: 2024-09-23 19:03:46 浏览: 88
在面向对象的设计中,我们可以创建一个`Student`类,包含学号、姓名、年龄和年级排名属性,并添加一个`Comparable`接口或者自定义排序接口(例如`ISortable`)。然后,为了满足各种排序需求,我们可以提供一个实现了比较逻辑的`Comparator`或者在`Student`类中添加`compareTo`方法。
以下是一个简单的示例:
```java
import java.util.Arrays;
import java.util.Comparator;
class Student implements Comparable<Student> {
private int id;
private String name;
private int age;
private int ranking;
// 构造函数,getters and setters...
@Override
public int compareTo(Student other) {
// 按照学号排序
if (id == other.id) {
// 如果学号相同,按照年龄排序
return Integer.compare(age, other.age);
} else {
return Integer.compare(id, other.id); // 学号升序
}
}
// 其他排序逻辑...
}
class SortService {
public void sortStudents(Student[] students, Comparator<Student> comparator) {
Arrays.sort(students, comparator);
for (Student student : students) {
System.out.println("学号:" + student.getId() + ", 姓名:" + student.getName() + ", 年龄:" + student.getAge());
}
}
}
public class Main {
public static void main(String[] args) {
Student[] students = ...; // 初始化学生对象数组
// 按学号排序
SortService service = new SortService();
service.sortStudents(students, Comparator.comparingInt(Student::getId));
// 按年龄排序
service.sortStudents(students, Comparator.comparingInt(Student::getAge));
// 以后如果有其他排序需求,只需传递对应的Comparator即可
}
}
```
阅读全文
相关推荐



















