20220510荣耀通开实习面经

没答出来的问题:
1. HashMap的使用中,equals和hashcode的关系是怎么样的?(基础题,没答出来)
解决:去读一下了HashMap的源码,其中每一个Node都有一个hash字段,由key值算出;当需要重写equals方法来比较键的对象值相等的时候,同时也要去重写hashcode函数的。因为当插入一个新的键值对的时候putVal函数:

先看table是否为空,若为空,则resize();
再看此要插入的键的hash对应的桶是否为空,若为空,直接插入;
最后(看链表的情况)依次比较此桶的链表的每个节点和要插入的新节点:
1)先比较此节点和新节点的hash值(key算出)
2)只有当两个hash值相等时,再比较key的地址是否一样或者key的equals是否相等
3)当两个条件都满足的时候,就会替换调此键值对。

所以,当map.put("hello",1)后,再map.put("hello",2),因为String重写了equals比较值,也重写了hashcode(值相等时,hash值也相等),这样在put

20220510荣耀通开实习面经最先出现在Python成神之路

版权声明:
作者:倾城
链接:https://www.techfm.club/p/31235.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>