我的主类中有一个学生的数组列表,名为S ...对象类型学生。在“s”中,我需要通过他们拥有的registrationNumber在我的arrayList“S”中对我的学生进行排序,从小到高。
我尝试了很多方法,但无法让它发挥作用......
public static void sort(){
int small;
for (int i=0; i < s.size() -1;i++){
small = i;
for (int ind = i + 1; ind< s.size(); ind++ ){
if( stud.get(ind).getRegNum() < s.get(small).getRegNum() ){
small = ind;
swap(i, small);
}
}
}
}
public static void swap(int one,int two){
}
答案 0 :(得分:1)
Collections.sort(yourStudentList);
comparteTo()
方法。 就是这样!
比较器的示例(假设registrationNumber
是整数):
@Override
public int compareTo(Student o) {
if(null== o)
return 1;
if(registrationNumber == 0 && o.registrationNumber==0)
return 0;
if(registrationNumber == 0 && o.registrationNumber!=0)
return -1;
if(registrationNumber != 0 && o.registrationNumber==0)
return 1;
return o.registrationNumber.compareTo(registrationNumber);
}
return 1 //when o is less than this
return -1 //when o is bigger than this
return 0 //when they are equal
编辑如果你需要使用selectionsort,那么你也需要这个比较器并且接口可以比较。但是你只有这样创建一个自定义sort()
函数来实现选择算法。
答案 1 :(得分:1)
你应该看看java集合。 见http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html
我假设您的学生班级有一个公共变量registrationNumber
public class StudentComparator implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
return (o1.registrationNumber>o2.registrationNumber);
}
}
某处电话: Collections.sort(学生,新的StudentComparator());