HashMap的源码,实现原理,底层结构

总的来说,HashMap就是数组+链表的组合实现,每个数组元素存储一个链表的头结点,本质上来说是哈希表“拉链法”的实现。

HashMap的链表元素对应的是一个静态内部类Entry,Entry主要包含key,value,next三个元素

主要有put和get方法,put的原理是,通过hash%Entry.length计算index,此时记作Entry[index]=该元素。如果index相同

就是新入的元素放置到Entry[index],原先的元素记作Entry[index].next

get就比较简单了,先遍历数组,再遍历链表元素。

null key总是放在Entry数组的第一个元素

解决hash冲突的方法:链地址法

再散列rehash的过程:确定容量超过目前哈希表的容量,重新调整table 的容量大小,当超过容量的最大值时,取

Integer.Maxvalue



    原文作者:申悟空
    原文地址: https://blog.csdn.net/shenjianzhuang/article/details/79032670
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞