感谢 ♥ 作者
先不感谢了

HashMap的实现原理总结(旧)

HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。

当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。

当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。

HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。

HashMap在每个链表节点中储存键值对对象。

 

 

 

 

 

注:碰撞问题:因为hashcode相同,所以它们的bucket位置相同,‘碰撞’会发生。因为HashMap使用链表存储对象,这个Entry(包含有键值对的Map.Entry对象)会存储在链表中。。

posted @ 2017-09-21 09:25  MJyc  阅读(129)  评论(0编辑  收藏  举报