gpt4 book ai didi

java - 为什么我们在 Comparable 实现中的 CompareTo 中使用 `this`?

转载 作者:行者123 更新时间:2023-11-29 06:54:58 24 4
gpt4 key购买 nike

我对 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 方法时,this 成为调用对象。由于调用对象(希望如此)已正确初始化,因此 this.name 将是调用对象的名称。

s.name 是传递给 compareTo 方法的 Student 对象的名称,它再次(希望)正确初始化并有一个名称。

归结起来就是一个String变量调用compareTo传入一个String变量进行比较

其次是当我们执行 Collections.sort(studentList); 时真正发生的事情

这是 Collections.Sort method 上的 JavaDocs但是您可能会问它相对于您的 Comparable 实现做了什么。简而言之,它在进行排序比较时使用您的 compareTo 方法

关于java - 为什么我们在 Comparable 实现中的 CompareTo 中使用 `this`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36226437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com