HashMap【重点】: JDK1.2版本,线程不安全,运行效率快;允许用Null作为key或者是value
源码分析
1、HashMap刚创建的时候,table是Null,为了节省空间,当添加第一个元素时,table容量调整为16
2、当元素个数大于阈值(16*0.75=12)时,会进行扩容,扩容后大小为原来的2倍,目的是减少调整元素的个数
3、JDK1.8 当每个链表长度大于8,并且元素个数大于64时,会调整为红黑树,目的提高执行效率
4、JDK1.8 当链表长度小于6时,调整成链表
5、JDK1.8以前,链表是头插入,JDK1.8以后是尾插入