gpt4 book ai didi

java - 删除时哈希表重新哈希

转载 作者:行者123 更新时间:2023-11-29 10:04:51 25 4
gpt4 key购买 nike

有谁知道为什么哈希表的 java jdk 实现在删除时不重新哈希表?

如果空间使用率太低怎么办?这不是减小尺寸和重新哈希的理由吗?

就像在 put 上触发 rehash 的加载因子 0.75 一样,我们可以在表的密度上有一个像 0.25 这样的下限(当然可以对这里的最佳值进行分析)并再次触发 rehash,前提是大小表的容量大于初始容量。

最佳答案

重新散列是一项昂贵的操作,基于 java 散列的数据结构试图避免它。他们只在查找性能不佳时才进行重新散列。这就是此类数据结构的目的:查找性能。

这是 HashMap java 文档中的引述:

The expected number of entries in the map and its load factor should be taken into account when setting its initial capacity, so as to minimize the number of rehash operations. If the initial capacity is greater than the maximum number of entries divided by the load factor, no rehash operations will ever occur.

If many mappings are to be stored in a HashMap instance, creating it with a sufficiently large capacity will allow the mappings to be stored more efficiently than letting it perform automatic rehashing as needed to grow the table.

除了这个论点之外,java 的创建者可能认为,如果哈希表中有那么多元素,那么再次拥有它们的可能性就非常大,因此无需重新哈希表两次。

关于java - 删除时哈希表重新哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12128288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com