HashMap中Entry以及Hash值的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linton1/article/details/90084524

HashMap的底层结构如下:

hashmapç»æ

HashMap的底层结构是数组+链表

数组:

       HashMap以键值对存储数据,其中Key-Value都是Map.Entry中的属性。数组的值对应Value值,数组的下标对应Key值,对应过程如下:将Key值进行Hash后得到Hash值,Hash值得范围大概40亿,很明显,内存存不下,进行转换,对数组的长度(即hashmap的长度)进行取模运算,得到的余数才用来做要存放的位置(即对应的数组下标)。[这也解释了HashMap的长度为什么是2的幂次方,为了提高取模运算的效率]。

链表:

        经过上述操作,依然会出现相同的数组下标,即哈希冲突。对于这种情况,HashMap采用链表形式进行存储。

至于其他的HashMap实现原理和源码分析,可以参考https://blog.csdn.net/strivenoend/article/details/80397825

猜你喜欢

转载自blog.csdn.net/linton1/article/details/90084524