key.GetHashCode() returns 键

key.GetHashCode() returns key

我正在实现一个哈希表,我使用 GetHashCode 为我使用的每个键获取唯一的哈希码,但是,当我调用 key.GetHashCode() 时,函数 returns 键。在我使用模数获得哈希表的正确存储桶后,我们能够实现哈希表,但这看起来不正确。

我是这样称呼它的。

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

在调用 gethashcode 之前我们应该做一些特殊的初始化吗?

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

在调用 GetHashCode() 之前没有 "special initialization" 要做的事情。 正如 Hans 所写,Int32 的 GetHashCode() 将 return int 本身 (see this answer).

GetHashCode() 的默认实现不保证唯一性。为了减少哈希码冲突,您需要覆盖该方法。这里有一个流行的 GetHashCode() 通用建议:What is the best algorithm for an overridden System.Object.GetHashCode?