我对Java中compareTo方法的执行感到困惑。

public int compareTo(Employee emp)
{
    int i = this.DeptId - emp.DeptId;

    if (i > 0)
        return 1;
    else if (i < 0)
        return -1;
    else
        return 0;
}


该方法将通过Employee类的对象调用,因此,第一次调用时,this.DeptId将是对象的DeptId,而emp.DeptId也是该对象的DeptId

当第二次调用此方法时,应再次使用第二个对象调用此方法,因此应再次使用return 0;,但事实并非如此。

我可以理解,我不知道在Java中如何调用compareTo方法。有人可以解释一下或给我参考以获得正确的答案吗?

我正在使用以下代码对其进行测试:

Employee e1 = new Employee(1, 11, "mfg", "Rajesh");
Employee e2 = new Employee(2, 12, "mfg", "Arka");
Employee e3 = new Employee(3, 11, "pes" ,"Sanjeev");
list.add(e1);
list.add(e2);
list.add(e3);
Collections.sort(list);


我不明白Collections.sort(list);在做什么。

compareTo一样第二次调用e2.compareTo(e1);的方式是我怀疑的地方。

最佳答案

如果呼叫employee1.compareTo(employee2),则thisemployee1,而empemployee2

换句话说,this.DeptId-emp.DeptId将为employee1.DeptId-employee2.DeptId

10-04 13:59