1.基本原理
对象经由hashcode(),计算出hash值,
hash值再经过hash算法,计算出下标index值,
一般数组默认16位,如果计算出的位置没有值,则将entity存入,
如果计算出的位置有值(hash碰撞),则形成链表
对链表里的每个元素进行equals()对比,如果equal则进行元素替换,
如果不equal则将新元素插入链表
2.数组默认16位,当使用位置达到75%后,进行扩容,扩容后所有元素重新hash运算,重新分布
3.java8以后,hashmap改动:
1)链表新增元素,由原来的加在表头,变为加载表尾
2)当形成的链表满足:单个链表长度>8 && 总元素书>64时,链表变为红黑树
3)红黑树,除了新增元素,其他操作效率均提高