首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为何答案是B

2011-12-21 
为什么答案是BclassPerson{privateStringname,commentprivateintagepublicPerson(Stringn,inta,Stringc)

为什么答案是B
class   Person{
private   String   name,comment;
private   int   age;
public   Person(String   n,int   a,String   c){
name=n;age=a;comment=c;
}
public   boolean   equals(Object   o){
if(!(o   instanceOf   Person))   return   false;
Person   p=(Person)o;
return   age==p.age&&name.equals(p.name);
}
}

what   is   the   appropriated   definition   of   the   hashCode   method   in   class   Person?

A.return   super.hashCode();
B.return   super.hashCode()+age*7;
c.return   super.hashCode()+comment.hashCode()/2;
D.return   super.hashCode()+comment.hashCode()/2-age*3;

[解决办法]
I don 't know.
[解决办法]
Well, you have to study the relationship between hashCode() and equals() methods.
[解决办法]
读一下Effective Java,equals方法里没有用到comment故排除c,d,a的话会产生相同的hashcode,降低散列表查找的效率.
如果两个对象equals为真,那hashcode一定要一样,如果两个对象equals为假,hashcode可以一样,但尽量不一样,可以提高效率

热点排行