【发布时间】:2016-12-29 19:07:33
【问题描述】:
public class TestSort3{
public static void main(String args[]){
ArrayList<Student> al=new ArrayList<Student>();
al.add(new Student(101,"Vijay",23));
al.add(new Student(106,"Ajay",27));
al.add(new Student(105,"Jai",21));
Collections.sort(al);
for(Student st:al){
System.out.println(st.rollno+" "+st.name+" "+st.age);
}
}
}
compareTo的定义表述为:
class Student implements Comparable <Student> {
int rollno;
String name;
int age;
Student(int rollno, String name, int age) {
this.rollno = rollno;
this.name = name;
this.age = age;
}
public int compareTo(Student st) {
if (age == st.age)
return 0;
else if (age > st.age)
return 1;
else
return -1;
}
}
我无法获得在compareTo 方法中比较年龄的逻辑。当 Collections.sort() 方法被调用时,compareTo() 将被调用并且我们已经传递了 ArrayList 的实例,所以它需要一个 Student 类的实例被传递,现在它是另一个 Student 实例比较?
我已经浏览过与此方法相关的其他 stackoverflow 链接,但我无法澄清我的疑问,请澄清这一点。
【问题讨论】:
标签: java sorting collections comparable