美文网首页
Java--HashMap底层实现详解-1

Java--HashMap底层实现详解-1

作者: 李赫尔南 | 来源:发表于2022-10-22 12:55 被阅读0次

      HashMap底层实现采用了哈希表,这是一种非常重要的数据结构。对于我们以后理解很多技术都非常有帮助(比如:redis数据库的核心技术和HashMap一样),因此,非常有必要让大家理解。
      数据结构中由数组和链表来实现对数据的存储,他们各有特点。
      (1)数组:占用空间连续。寻址容易,查询速度快。但是,增加和删除效率非常低。
      (2)链表:占用空间不连续。寻址困难,查询速度慢。但是,增加和删除效率非常高。
      那么,我们能不能结合数组和链表的优点(即查询快,增删效率也高)呢?答案就是“哈希表”。哈希表的本质就是“数组+链表”。

    建议
      对于频繁出现的“底层实现”讲解,建议学有余力的童鞋将它搞通。刚入门的童鞋如果觉得有难度,可以暂时跳过。入门期间,掌握如何使用即可,底层原理是扎实内功,便于大家应对一些大型企业的笔试面试。

    ·Hashmap基本结构讲解
      哈希表的基本结构就是“数组+链表”。我们打开HashMap源码,发现有如下两个核心内容:

    HashMap底层源码(1).png

      其中的Entry[] table 就是HashMap的核心数组结构,我们也称之为“位桶数组”。我们再继续看Entry是什么,源码如下:


    HashMap底层源码(2).png

    一个Entry对象存储了:
    1.key:键对象 value:值对象
    2.next:下一个节点
    3.hash:键对象的hash值
    显然每一个Entry对象就是一个单向链表结构,我们使用图形表示一个Entry对象的典型示意:


    Entry对象存储结构图.png

    然后,我们画出Entry[]数组的结构(这也是HashMap的结构):


    Entry数组存储结构.png

    ·存储数据过程put(key, value)
    Java--HashMap底层实现详解-2

    相关文章

      网友评论

          本文标题:Java--HashMap底层实现详解-1

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