HashMap实现了Map接口
Java 8:底层结构:数组+链表+红黑树
里面维护了Node类型的的数组,默认值为null,当第一次调用put方法时,table初始化长度为16,加载因子为0.75(即在大于长度的0.75时需要扩容),此时临界值为12。
调用put方法,里面主要是在调用里面的putValue方法,里面判断要添加的元素的哈希值,经过运算,可得出该元素在放在table表里的位置,如果该位置上没值,便直接添加进去,如果有值,则需要判断是否重复,重复则不能添加,如果不重复则继续添加进去。当里面是链表结构,则追加到链表的末端,如果是树结构,则经比较后,添加到对应位置。如果当前的size>临界值,则需要按2倍长度扩容。
注意:1.每次扩容都需要重新计算哈希值,让每一个元素得到一个新的位置。2.链表个数>8 && 容量>64 时,则更改为树结构。
Java 7:
与Java 8的区别:
1.底层结构:数组+链表
2.底层维护了entry类型的数组。
HashMap的底层粗介
最新推荐文章于 2024-09-15 19:46:31 发布