hashCode的哈希值不相同当存储自定义对象的时候,如果没有重写hashCode()方法,那么就会调用Object类的hashCode(),得到当前对象的地址,地址不同就不能去重复.
当存储对象的时候,先调用对象的hashCode()方法计算一个哈希值,然后在集合中查找是否有哈希值相同的对象,如果没有哈希值相同的对象,那么直接存入,如果有哈希值相同的对象,调用equals()方法比较,比较结果为true就不存,比较结果为fals则存入,如果希望将属性相同的对象去重复,那么属性相同的对象要返回相同的哈希值.
hashcode是对象在key-value映射集合当中hash函数生成的hash码,可以通过hashcode反算出对象地址,非常适合快速查找。JAVA对象的hashcode是通过对象的地址算出来的整数,不会重复,hashcode方法就是返加这个hashcode的方法,而equals只是比较对象内容是否相等,比如比较对象中所有的属性是否相等。 |