为什么重写equals的时候,建议同时重写hashcode方法
为什么重写equals的时候,建议同时重写hashcode方法?
1.什么是hashcode
hashcode是运用hash算法,就是把任意长度的输入,通过散列算法变换成固定长度的输出,这个输出就是hashcode。
2.hashcode在java中的运用
在java set集合中,当插入一个对象的时候,会判断集合中是否存在相同的对象。相同的判断依据是根据hashcode+equals方法,
当输入对象的hashcode在集合中有相同的hashcode时,会到对应的散列存储中,比较equals,不同则插入,相同则放弃
当输入对象的hashcode在集合中没有相同的hashcode时,就可以直接插入set结合
3.为什么重写equals的时候,建议同时重写hashcode方法
重写hashcode方法可以更加有效率的判断对象是否相同,在对象的set集合中,插入操作也会更有效率
使用同一hash算法的时候:
两个对象相同,hashcode必定相同
hashcode相同,两个对象不一定相同(hash碰撞)