黑马程序员技术交流社区

标题: 使用set集合时重写hashCode方法的原因 [打印本页]

作者: 云袭    时间: 2016-6-12 21:17
标题: 使用set集合时重写hashCode方法的原因
          只记得使用set集合存储元素时元素的类要重写hashcode和equals方法,原因忘了。今天又回顾了下..
          如果不重写hashcode的话默认使用Object的hashcode方法,Object中的hashcode是用地址值通过算法计算出的,而不同对象在内存中的地址值肯定不同,这样判断的话是不会存在相同对象的。而对于我们人来说,只要对象的属性相同就认为它们是相同的,所以为了符合我们的使用习惯,重写hashcode方法。重写的hashcode方法使用的是对象的属性组合信息(具体是基本类型值+引用类型的哈希值+一个质数常量,质数是为了增加结果的散列性)。但是这样重写后就会出现哈希值(属性组合信息)相同但对象不同的情况,所以还要和equals一起使用来判断对象是否相同。最终确保对象的唯一性。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2