作者louisyu (louis)
看板java
标题[问题] 一题SCJP的题目,有关equals()&hashcod()
时间Tue Dec 6 04:03:41 2011
在练习SCJP的时候有一题一直搞不懂
Given:
Class SortOf{
String name;
int bal;
String code;
short rate;
public int hashCode(){
retrun (code.length()*bal);
}
public boolean equals(Object o){
//insert code here
}
}
Which of the following will fulfill the equals() and hashCode() contracts
for this class?
正确解答是:
c. return ((SortOf)o).code.length()*((SortOf)o).bal ==
this.code.length()*this.bal;
d. return ((SortOf)o).code.length()*((SortOf)o).bal*((SortOf)o).rate ==
this.code.length()*this.bal*this.rate;
我了解为什麽c是对的,但我不懂为什麽d也是对的
我认为当两个物件比较的时候,
当equals() returns true,两个hashCode不一定会相等
所以d不应该是正确答案
不晓得有没有人可以解答我的问题
为什麽d是对的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 74.196.11.161
1F:推 AI3767:可以把其它错误的答案一起列出来比较吗? :) 12/06 13:43
2F:→ awert:这题目还可以更烂一点... 12/06 21:49
3F:→ tkcn:应该是 hashCode 相等时,equals 不一定要回传 true 吧 12/07 01:21
4F:推 MephistoH:其实 equals 底子里也是用 == 12/07 08:33
5F:→ glennchen:equal 不是会比较快吗? 12/07 10:30