您的位置:首页 > 其它

重写equals方法的同时为什么要重写hashcode方法

2014-04-17 20:06 417 查看
首先我们根据图示来分析一下HashMap中add方法的源代码



从上面的分析过程我们能看出将一个(key,value)加入map中其实仅仅与key有关,而且在加入过程中首先使用到了hashcode然后使用了equals,所以说如果equals表示了两个对象的相等关系却没有保证其hashcode也相等就会出现在hashmap中加入了两个相等的key的情况,这也就是为什么在重写equals的同时一定要重写hashcode的根本原因。

如果研究get方法的源码也同样会发现与普通相似的处理算法。

不论是直接还是间接使用了HashMap HashTable(注意HashSet底层就是使用了一个HashMap),都必须在重写equals的同时重写hashcode。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: