java基础——HashMap的源码,实现原理,底层结构

总的来说,HashMap是数组+链表的组合实现。每个数组元素存储一个链表的头节点。HashMap的链表元素对应的是一个静态内部类Entry,Entry主要包括key,value,next三个元素。

主要有put和get方法,put的原理是:通过计算其hashcode,如果有相等的hashcode值,则将此数据放到数组对应位置的链表的头节点。若是没有相等的hashcode值,则将此数据放入数组对应位置。get先遍历数组再遍历链表元素。null key总是放在Entry数组的第一个元素。HashMap用链地址法解决hash冲突。再散列rehash的过程:确定容量超过目前哈希表的容量,重新调整table的容量大小。HashMap默认的初始容量为16,默认负载因子为0.75.当容量超过16*0.75就要进行扩容。每次扩容一倍。再jdk1.8之后HashMap采用数组+红黑树的方式。

阅读更多

没有更多推荐了,返回首页