1.HashMap的内部结构#1
1.1实现了基于哈希表的Map接口
允许使用null键(值允许一个)和null值;
不保证映射的顺序,即无序性
HashTable的不同在于不允许使用null而且是同步的
1.2影响HashMap性能的两个参数:初始容量和加载因子默认(16*0.75=12)阈值为12
容量是HashMap中桶数量,初始容量是创建时的容量。
加载因子是HashMap可以达到多满的尺度,当表中数据超过加载因子与当前容量的乘积时(阈值),HashMap就会进行rehash操作,对其进行扩容,调用其resize()方法,扩容为2次幂
加载因子在0.75时,达到一个平衡(即更新操作与查询操作的速度保持平衡)
1.3HashMap是数组+链表+红黑树(1.8以后)结构,在存入新的键值对时,首先调用其HashCode方法,传入key来计算哈希码,比较与原键值对的哈希码,若相等则发生哈希冲突,调用equals方法来比较两个对象,相同则不存入,不同则把当前传进来的键值对生成一个新的节点保存在链表的尾部,若链表的长度大于8 就会调用treeifyBin()方法,将链表结构转化为红黑树结构。
未完TODO