首先声明自己大部分的理解的出处:如何重写hashCode()方法
接下来自己的理解:
1、首先java中set 、HashMap貌似包括List等底层的存储都会把存储区域分成n个部分,而具体存在哪个部分是由hashcode决定的,也就是说查询的时候他会通过hashcode 所有小查询范围,所以如果所有的hashcode都一样,你的hashcode返回了一个常量 ,那么结果就是存储进去以后 都存放在一个区域,查询的时候变成了一个链式查询,完全没有效率。
2、如果你的hashcode返回的是一个随机数,或者不去重写hashcode,那么即使两个对象是一样的,也会出现问题。举个例子(应用自上面的博客):
我们先创建2个新的Coder对象:
Coder c1 = new Coder("bruce", 10);
Coder c2 = new Coder("bruce", 10);
假定我们已经重写了Coder的equals()方法而没有重写hashCode()方法:
@Override
02.