hashCode() 和 equals()方法的重写:
-
为什么要重写hashCode() 和 equals()?
未重写hashCode中 是随机生成一个hash值,存在一个问题:当往hashSet集合中添加对象元素时,明明不可存放重复数据的,但是偏偏发生了。
如果现在需要往hashSet中添加数据,添加一个数据直接进行存放,添加第二个数据的时候,需要判断第二个数据是否与第一个数据相同,则需要进行equals判断,但是如果有1000个数据呢?效率是不是过于低下,速度慢?
那么,①可以通过hashCode先计算出hash值,②接着通过hash算法计算出所添加元素要存放的位置,看当前位置有没有存放元素,效率是不是比equals()快上许多。
-
以HashSet为例: