钥匙GetHashCode()返回键

本文关键字:返回 GetHashCode 钥匙 | 更新日期: 2023-09-27 18:29:52

我正在实现一个哈希表,我使用GetHashCode为我正在使用的每个键获取一个唯一的哈希代码,但是,当我调用键时。GetHashCode(),函数返回键。在我使用modulo获得哈希表的正确bucket之后,我们可以实现哈希表,但这看起来不太好。

我是这样称呼它的。

public V Find(K key)
    {
        int bucketIndex = key.GetHashCode() % N;
        return buckets[bucketIndex].Find(key);
    }

在调用gethashcode之前,我们应该进行特殊的初始化吗?

我现在正在考虑在重载函数中编写自己的散列函数,但我认为使用函数调用会更容易。

钥匙GetHashCode()返回键

在调用GetHashCode()之前,不需要进行"特殊初始化"。正如Hans所写的那样,Int32的GetHashCode()将返回int本身(参见这个答案)。

GetHashCode()的默认实现不能保证唯一性。为了减少哈希代码冲突,您需要覆盖该方法。这里有一个流行的GetHashCode()通用建议:对于重写的System.Object.GetHashCode,什么是最好的算法?