当前位置: 首页 > 后端技术 > Java

关于面试时答不上来的HashMap问题

时间:2023-04-02 01:58:35 Java

,原因是面试官问了我hashMap的get方法的底层原理。我的回答是:根据传入的key,做hash求余运算,定位到具体的bucket位置,然后遍历链表或者红黑树,比较key值是否相同。这里面试官直接问我了,所以他比较key的时候是比较key里面的value还是key的reference。我无法回答。源码分析第572行:get()方法底层首先比较引用地址是否相同,如果引用地址不同,则调用equals方法第148行:对象类调用equals方法时,它会先看具体的实现类有没有覆盖equals方法?如果不是,则使用默认的equals方法来比较引用地址。如果覆盖,则取决于具体类中equals方法的实现逻辑。总结一下,我觉得比较好的答案是:首先关键肯定会比较申请地址是否相同。如果不同,则调用euqals方法进行比较。具体比较要看具体的实现类。