我对在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);
这就是我怀疑的地方。
答案 0 :(得分:3)
如果您致电employee1.compareTo(employee2)
,this
为employee1
且emp
为employee2
。
换句话说,this.DeptId-emp.DeptId
将为employee1.DeptId-employee2.DeptId
。
答案 1 :(得分:1)
所以第一次调用它时,this.DeptId将是对象的DeptId和emp.DeptId也是这个对象的DeptId。
这种说法是错误的。无论何时调用compareTo
方法,它都会传入另一个对象作为方法的参数而不是同一个对象本身。
答案 2 :(得分:0)
java中的Compareto方法主要用于比较两个字符串,如
public class Test {
public static void main(String args[]) {
String str1 = "Strings are immutable";
String str2 = "Strings are immutable";
String str3 = "Integers are not immutable";
int result = str1.compareTo( str2 );
System.out.println(result);
result = str2.compareTo( str3 );
System.out.println(result);
result = str3.compareTo( str1 );
System.out.println(result);
}
}
<强>输出:强>
0
10
-10
这里str1.compareTo( str2 );
比较字符串1和2,即str1将是你的this
对象,并根据它们之间的差异返回和整数。如果两个字符串相等,则返回0.
a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
检查此链接http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html http://www.tutorialspoint.com/java/java_string_compareto.htm