gpt4 book ai didi

java - 摆脱 bin 索引计算中的循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:08 26 4
gpt4 key购买 nike

这是一个 implementation of HashMap .

它提供了获取 bin 索引的代码:

private int getIndex(K key)
{
int hash = key.hashCode() % nodes.length;
if (hash < 0)
hash += nodes.length;
return hash;
}

To make sure the hash value is not bigger than the size of the table, the result of the user provided hash function is used modulo the length of the table. We need the index to be non-negative, but the modulus operator (%) will return a negative number if the left operand (the hash value) is negative, so we have to test for it and make it non-negative.

如果hash结果是一个很大的负值,那么循环中的加法hash += nodes.length可能需要大量的处理。

我认为它应该有 O(1) 算法(独立于 hash 值)。

如果可以,如何实现?

最佳答案

不能是很大的负数。

anything % nodes.length 的结果总是小于 nodes.length 的绝对值,所以你需要一个 if,不是循环。这正是代码的作用:

if (hash < 0) /* `if', not `while' */
hash += nodes.length;

关于java - 摆脱 bin 索引计算中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601834/

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