我无法理解在语句 this.User.compareTo(arg0.User) 中如何比较两个对象。我想知道比较对象的流程,例如比较“arg0”时“this”所指的内容。
public class Other implements Comparable<Other>{ // making objects of this class
public String User;
public String Pass;
public String getUser() {
return User;
}
public void setUser(String user) { //getter and setter
User = user;
}
public String getPass() {
return Pass;
}
public void setPass(String pass) {
Pass = pass;
}
@Override
public int compareTo(Other arg0) { // overriding to comapre objects
// TODO Auto-generated method stub
return this.User.compareTo(arg0.User); //here how objects are compared like what "this "
//refers here when we are passing list in Collections.sort(list);
}
}
这是主类
import java.util.*;
public class demo
{
public static void main(String[] args)
{
Other a=new Other(); //creating objects
a.User="farma";
a.Pass="123";
Other a1=new Other();
a1.User="arma";
a1.Pass="123";
Other a2=new Other();
a2.User="brma";
a2.Pass="123";
List<Other> list=new ArrayList<Other>();
list.add(a);
list.add(a1);
list.add(a2);
Collections.sort(list); //sorting
for (Other other : list) {
System.out.println(other.User+" "+other.Pass); //printing values
System.out.println("");
}
}
}
最佳答案
return this.User.compareTo(arg0.User);
当您编写该行时,您正在比较 User 对象并返回结果。
即将到来的 this
,它指向当前实例,当您将 Other 传递给此方法时,它会调用当前实例,该实例与传递的对象 User
进行比较。
如果你看到了
的签名public class Other implements Comparable<Other>{ // making objects of this class
public String User;
在其他类中有一个名为 User
的 String 对象。
所以排序取决于用户的名字。
编辑:
当您对集合使用排序方法时,在所有委托(delegate)发生后,它使用 Sorting algorithms .查看要检查的算法。
关于java - compareTo 方法如何在这里对对象进行一一排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33296701/