- Map
特点:key-value映射 - HashMap
key无序唯一
value无序不唯一
key和value都可以为null
数组+链表(1.7) 数组+链表+红黑树(1.8)
线程不安全,效率比较高
A为什么初始化的时候大小是2的N次幂?
Q初始化的时候调用次方法对大小进行设置
好处:方便&运算,提高效率;在扩容涉及数据的迁移过程,迁移的时候只要判断二进制的前一位是0或者1即可,如果是0表示位置不变,如果 1 将索引位置加上旧数组长度即为新数组下标。
扩容大小是2倍,保证了大小符合2的N次幂。
- 1.7源码知识点
1.默认初始容量
2.加载因子
3.put操作(设置值,计算hash,扩容,数据迁移) - 1.8源码知识点
扰动函数
- HashTable
线程安全,效率低
key和value都不可以是null
- LinkedHashMap
有序的HashMap 速度快
链表 - TreeMap
有序
红黑树