美文网首页
HashMap数组结构与链表结构的实现例子

HashMap数组结构与链表结构的实现例子

作者: Skybike | 来源:发表于2018-01-14 13:27 被阅读0次

    以下内容属于笔记,如有人阅读并发现错误,请不吝指出。

    首先先了解下HashMap的实现原理,HashMap使用数组和链表的形式存储数据,这是HashMap的牛X所在。一开始,我只看到HashMap中时Entry[]的形式存储数据,很久以后,但我看到next关键字后才意识到,Entry是个链表结构。

    如下代码:

    HashMap的put方法截图① HashMap的添加元素Entry方法截图②

    我们知道,当你使用put方法将键值对放入HashMap中时,首先会对key值去hash值确定Entry数组中的位置,如果这个位置上已经有元素存在,就会去遍历该位置上的Entry链表对象,替换或者赋值给Entry。

    比如,依次加入如下三个元素:(Aa与BBhashcode值相同)

    HashMap添加元素

    最后的结果是Entry数组中元素为

    添加结果

    BB=2222的next指向Aa=2222,Aa=1111被最后一次Aa=2222给更新了

    HashMap链表结构图截

    具体的过程如下:

    第一次放入Aa=1111,在Entry数组下标下标为4的地方放入,之后在放入BB=2222时,由于Aa与BB的hashcode相同,得到Entry数组下标也为4,就会在该位置插入BB=2222,并将BB=2222的next指向Aa=1111(执行②中BB的next指向Aa),最后再放入Aa=2222,又是数组下标为4,取该位置的Entry链表,取next,发现为Aa=1111,于是将Aa=1111更新为2222(执行①中for循环进行更新).

    相关文章

      网友评论

          本文标题:HashMap数组结构与链表结构的实现例子

          本文链接:https://www.haomeiwen.com/subject/aajkoxtx.html