Java对具有多个参数的对象进行排序

Ben*_*son 4 java sorting object

我最近一直致力于更好地理解排序算法及其与不同类型输入的关系.目前,我正在开展一项学生管理计划,每个学生都有三个参数:姓氏,GPA和用户ID(String,double,int).它们分别存储在具有这三个参数的Student类中,并且有学生DOZENS(该程序的一个关键特征是输入,删除和更新学生).

我的问题是:使用主要排序算法(mergesort,quicksort等),按每个参数对学生列表进行排序的最佳方法是什么?例如,执行mergesort以按GPA对列表进行排序的最佳方法是什么?或者使用quicksort按姓氏对列表进行排序?

基本上我的问题归结为......如果他们没有三个参数,我可以对这些对象进行排序(编写一个mergesort来排序100个数字对我来说非常容易).如何管理其他两个参数并确保在排序后可以访问它们?

dav*_*veb 5

在Java中完成此操作的方法是使用不同的Comparators.然后你说:

Collections.sort(list, new NameComparator());
Run Code Online (Sandbox Code Playgroud)

要么

Collections.sort(list, new GpaComparator());
Run Code Online (Sandbox Code Playgroud)

这些比较器使用不同的字段来定义两个元素之间的顺序.

例如,Name Comparator可能是:

class NameComparator implements Comparator< Student> {
    @Override public int compare(Student left, Student right) {
        return left.getName().compareTo(right.getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

和GpaComparator可能是

class GpaComparator implements Comparator< Student> {
    @Override public int compare(Student left, Student right) {
        if (left.getGpa() < right.getGpa()) {
            return -1;
       } else if (left.getGpa() > right.getGpa()) {
            return 1;
       } else {
           return 0;
     }
 }
Run Code Online (Sandbox Code Playgroud)