map中hashcode和equals如何使用

map中hashcode和equals如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创新互联公司主营五峰网站建设的网络公司,主营网站建设方案,成都app软件开发,五峰h5微信平台小程序开发搭建,五峰网站营销推广欢迎五峰等地区企业咨询

HashMap:链表+数组方式实现。

HashMap的存储: 先从通过key的hascode计算出位置,然后存入到链表。

HashMap查找key: hashMap会先根据key值的hashcode经过运算定位其所在数组的位置,再根据key的equals方法匹配相同key值获取对应相应的对象.

也即是说,一个Key的查找是由hashcode和equals方法,共同来决定的。如果只实现equals, 而不实现hashcode。那么必然存着问题。

部分源码:

if (first.hash == hash && // always check first node
                ((k = first.key) == key || (key != null && key.equals(k))))
                return first;

equals 和 hascode是Java对象的两个方法。默认实现是:equals,比较两个对象的内存地址。hashcode,通过对象的内存地址计算出的散列值。 如果两个对象相等,hashcode一定相等。

当对某类equals重写之后,两个对象实例的内存地址不一定相同,而hashcode也不一定相同。 根据hashcode的规则,两个对象相等其hashcode一定相等,所以矛盾就产生了,因此重写equals一定要重写hashcode。

看完上述内容,你们掌握map中hashcode和equals如何使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


文章名称:map中hashcode和equals如何使用
文章地址:http://hbruida.cn/article/pcdpop.html