HashMap
HashMap JDK 7 中 HashMap 的数据结构是数组+链表。 JDK 8 中 HashMap 的数据结构是数组+链表+红黑树。 它在链表长度大于8且数组长度大于64时候会把链表转换成红黑树 HashMap 的初始容量是 16,随着元素的不断添加,HashMap 就需要进行扩容,阈值是capacity * loadFactor,capacity 为容量,loadFactor 为负载因子,默认为 0.75。 扩容后的数组大小是原来的 2 倍,然后把原来的元素重新计算哈希值,放到新的数组中。 负载因子(load factor)是一个介于 0 和 1 之间的数值,用于衡量哈希表的填充程度。它表示哈希表中已存储的元素数量与哈希表容量之间的比例。 负载因子过高(接近 1)会导致哈希冲突增加,影响查找、插入和删除操作的效率。 负载因子过低(接近 0)会浪费内存,因为哈希表中有大量未使用的空间。 HashMap 的put过程: 1.他会先对key计算扰动hash,通过key.hashCode() ^ (key.hashCode() >>>...




