【发布时间】:2012-05-26 04:22:07
【问题描述】:
当大小超过 maxthreshold 值时,如何在 hashmap 或 hashtable 中完成重新散列过程?
是否所有对都只是复制到一个新的存储桶数组中?
编辑:
重新散列后,同一个桶(链表中)的元素会发生什么?我的意思是他们会在重新散列后留在同一个桶中吗?
【问题讨论】:
-
当您重新哈希并将所有内容移动到新位置(存储桶等)时,旧元素也会再次重新哈希并根据其新哈希码存储在新存储桶中。分配用于存储元素的旧空间被垃圾回收。
-
@dharam:因此得出的结论是,在同一个桶中的元素在重新哈希后可能不在同一个桶中,不在同一个桶中的元素在重新哈希后可能在同一个桶中?
-
是的..你是绝对正确的:)
-
询问“这通常是如何根据教科书完成的”并不等同于“在这个特定的实现中这是如何完成的”。例如,Java 对少于 8 个条目的存储桶使用链表节点,而对具有 8 个或更多条目的存储桶使用树状节点。
标签: java algorithm hash hashmap hashtable