底层结构:
hashmap1.7底层结构是entry数组+链表,
hashmap1.8底层结构是node数组+链表+红黑树
扩容策略:7上8下(7前8后)
1.8会保持原链表的顺序并且在元素插入后检测是否需要扩容,扩容后,不会把所有元素重新计算一遍位置;
1.7会颠倒链表的顺序并且在元素插入前检测是否需要扩容,扩容后,把所有元素重新计算一遍位置,为了降低hash冲突;
Hashmap中文名哈希映射,是基于哈希表的 Map 接口的实现,HashMap是一个用于存储Key-Value键值对的集合。
相同key,新值会在数组的位置把旧value值覆盖掉,并返回旧的value值,如果是不同key,但是key计算出来的hash一样,则会在数组中,按照7上8下生成链表;
1.8什么时候转红黑树,什么时候退化成链表
红黑树的出现时机(链表树化):1. 链表的长度达到8; 2. 元素的总数量达到64。
底层数组类型:
1.7数组类型:entry数组
1.8数组类型:node数组
1.7:
hashMap线程不安全?hashMap在多线程的环境下,会出现什么问题?
1.会出现丢值 2.会出现环链
总结:
1:hashMap底层结构是Entry数组+单项链表
2