我对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)
,则this
是employee1
,而emp
是employee2
。
换句话说,this.DeptId-emp.DeptId
将为employee1.DeptId-employee2.DeptId
。