hashmap 查找机制 扩容机制
时间: 2023-11-08 07:19:19 浏览: 100
ArrayList集合与HashMap的扩容原来.docx
HashMap 是一种基于哈希表的数据结构,它能够提供快速的插入和查找操作。
在 HashMap 中,每个元素都包含一个键对象和一个值对象。当我们插入一个元素时,HashMap 会根据键对象的哈希码计算出该元素在哈希表中的索引位置,然后将该元素插入到该位置上。当我们查找一个元素时,HashMap 会根据键对象的哈希码计算出该元素在哈希表中的索引位置,然后在该位置上查找元素。
如果哈希表中已经有了该索引位置上的元素,HashMap 会使用 equals() 方法来比较键对象是否相等。如果键对象相等,则返回该元素的值对象;否则,说明该索引位置上已经有元素,但是键对象不相等,此时就会发生哈希冲突。
哈希冲突是指两个或多个键对象的哈希码相同,但是它们在哈希表中的索引位置却不同。当发生哈希冲突时,HashMap 会使用链表或红黑树来解决冲突。如果在该索引位置上已经存在链表,则会将该元素插入到链表的尾部;否则,会将该元素插入到该索引位置上,并将该位置上的元素转换为红黑树。
当 HashMap 中的元素个数达到负载因子(默认为 0.75)时,就需要进行扩容操作。扩容操作会创建一个新的哈希表,并将原来哈希表中的所有元素重新计算索引位置并插入到新的哈希表中。扩容操作的目的是为了尽可能减少哈希冲突,从而提高 HashMap 的性能。在扩容时,HashMap 会将容量翻倍,并且找到最近的 2 的幂作为新的容量。
阅读全文