HashMap底层详解-001-数据结构putget

Posted JavaWeb架构师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap底层详解-001-数据结构putget相关的知识,希望对你有一定的参考价值。

今天小粉粉去某公司参加Java开发工程师的面试了。但是不太顺利,然后她遇见了小灰灰……

HashMap底层详解-001-数据结构、put、get

  1. HashMap的数据结构

  • HashMap的数据结构是  数组+链表 的形式组成的。

HashMap底层详解-001-数据结构、put、get

  • 数组(这个table就是咱们看见的数组部分。)

HashMap底层详解-001-数据结构、put、get


  • 链表(在数组元素的内部)

HashMap底层详解-001-数据结构、put、get


  1. put、get

  • put:

    • 先根据put进来的元素的key值对应的hash值得到这个元素应该存放在table中的位置(index)

    • 把这个元素放入到index位置上。如果这个index上已经存放有其他元素了,那在同一个位子上的元素将以链表的形式存放,新加入的放在链头(头插法)

HashMap底层详解-001-数据结构、put、get


  • get:

    • 先根据get元素的key值对应的hash值得到这个元素应该存放在table中的位置(index)

    • 再在这个index的元素的链表中去equals(key),如果相等的话,那就是要get的值(顺便一提:实现者认为后面插入的被查找的概率更大,所以使用了头插法)

HashMap底层详解-001-数据结构、put、get

HashMap底层详解-001-数据结构、put、get

HashMap底层详解-001-数据结构、put、get












2.简书:http://www.jianshu.com/u/53b3f4658edc
3.CSDN:http://blog.csdn.net/qq_33605778?viewmode=contents


视频教程















JavaWeb架构师







点击阅读原文,支持作者!


以上是关于HashMap底层详解-001-数据结构putget的主要内容,如果未能解决你的问题,请参考以下文章

JDK1.7HashMap源码详解

Java集合详解:HashMap原理解析

HashMap底层详解-003-resize并发下的安全问题

HashMap底层详解-002-hash算法长度的秘密

hashmap详解(基于jdk1.8)

HashMap原理详解