hashMap是非同步的,即线程不安全。
变为同步有Collection.synchronizeMap() 抑或CurentHashMap类
hashMap为一个数组链表(数组中的每个元素都是一个链表的头结点) hashcode()对建计算Hash值 equals()发生碰撞时,检测key值是否相同 存储方式为Entry类(即key value存储在一起)
hashMap的key用Integer,String。因为要计算hashcode值,所以只要final修饰的类都可以作为key。
如果链表的阈值超过6,即将链表转为红黑树。
put(key,value) 首先hash(key)获得数组下标,再调用equals()方法检查Key是否相同。如果key相同则,更新value值。如果不同,则在链表末尾插入Entry(即Entry->next = 新Entry)。
负载因子为0.75。数组填满75%的时候。就会发生rehasing。即将数组扩大(具体细节,以后再加上来)
rehasing时候的hasing竞争,没搞懂。