Map 接口实现,是以 key-value 存储模式存在 ,HashMap 的实现不是同步的,星池starpool这意味着它不是线程平安的。它的 key、value 都能够为 null,此外,HashMap 中的映射不是有序的。实践上的哈希抵触是指计算出来的哈希值一样,导致抵触了,不过在HashMap中的哈希抵触具体是指(n-1)&hash,这个值是hashMap里数组的下标。Jdk8之前的解决办法是通过链表解决,只有hash抵触了,就会将节点增加到链表尾部;jdk8之后的做法是通过链表+红黑树的办法,
HashMap在扩容时,都是翻两倍,比方16的容量扩充到32,。HashMap进行扩容的办法是比拟奇妙的,扩容后,星池starpool与原来的下标(n-1)&hash绝对,其实只是多了1bit位。扩容后节点要么是在原来地位,听起来如同很懵,所以还是认真看上面的剖析: