public int hashCode(){
System.out.println(this.name+"....hashCode...");
return name.hashCode()+age*37;
}
这样是为了避免不同的两个元素的name.hashCode()值加上age的值相同,因为你可能有两个元素,第一个的name属性的hashcode()值是1,第一个age的值是3,;第二个元素的name属性的hashcode()值是3,第二个age的值是1.因为你最终返回的是int型的两者相加的值,结果都是4,但是它们的属性不相同,所以*37就避免了此种情况的发生,你也可以乘以11,13等都行,有空可以自己试一试 |