Ben*_*son 4 java sorting object
我最近一直致力于更好地理解排序算法及其与不同类型输入的关系.目前,我正在开展一项学生管理计划,每个学生都有三个参数:姓氏,GPA和用户ID(String,double,int).它们分别存储在具有这三个参数的Student类中,并且有学生DOZENS(该程序的一个关键特征是输入,删除和更新学生).
我的问题是:使用主要排序算法(mergesort,quicksort等),按每个参数对学生列表进行排序的最佳方法是什么?例如,执行mergesort以按GPA对列表进行排序的最佳方法是什么?或者使用quicksort按姓氏对列表进行排序?
基本上我的问题归结为......如果他们没有三个参数,我可以对这些对象进行排序(编写一个mergesort来排序100个数字对我来说非常容易).如何管理其他两个参数并确保在排序后可以访问它们?
在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)
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |