java - compareTo 方法如何在这里对对象进行一一排序

标签 java collections

我无法理解在语句 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/

相关文章:

java - 无法在 hibernate 中连接到服务器数据库

c# - 使用 linq 合并集合

java - 用 Arrays.asList 初始化 List<>

java - 我应该实现 List 接口(interface)还是扩展 ArrayList 类

java - getResource() 没有在类路径上定位资源

java - 使用代码查找距离范围内的点(在数据库中存储一组纬度/经度)

Java 8 Map KeySet Stream 无法按预期在 Collector 中使用

Java 列表过滤和查找第一个/查找最后一个

java - 如何让kafka Producer持续运行

java - 如何从 JNI 代码中检测字节顺序?