A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马