我是Java的新手,还是Collection框架的新手。我知道这this
是指当前对象
public class Student implements Comparable <Student> {
String name;
int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
public int compareTo(Student s) {
return this.name.compareTo(s.name);
}
public String toString() {
return this.name + ", " + this.grade;
}
}
这this.name
是null,并且s.name
确实有一个值,因此我们通过比较来尝试做些什么this.name.compareTo(s.name);
当我们这样做时,真正发生了什么Collections.sort(studentList);
?
该代码段仅用于演示目的
您在问两个不同的问题,所以我将分别回答
第一个是我们通过比较this.name.compareTo(s.name)来尝试的结果;
当在Student类的对象上调用compareTo方法时,这将成为调用对象。由于调用对象(希望已正确初始化),因此此.name将是调用对象的名称。
s.name是传递给compareTo方法的Student对象的名称,该对象再次(希望)正确地初始化并具有名称。
归结为一个调用compareTo的String变量,传入一个String变量进行比较
其次是当我们执行Collections.sort(studentList);时实际发生的事情;
这是Collections.Sort方法上的JavaDocs,但是您可能会问它与Comparable的实现有关。简而言之,在进行排序比较时,它使用了compareTo方法
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句