Я реализую хэш-таблицу, и я использую GetHashCode для получения уникального хэш-кода для каждой используемой мной клавиши, однако, когда я вызываю key.GetHashCode(), функция возвращает ключ. После того, как я использую modulo для получения правильного ведра хэш-таблицы, мы можем реализовать хэш-таблицу, но это выглядит не так.key.GetHashCode() возвращает ключ
Вот как я это называю.
public V Find(K key)
{
int bucketIndex = key.GetHashCode() % N;
return buckets[bucketIndex].Find(key);
}
Есть ли специальная инициализация, которую мы должны сделать до вызова gethashcode?
Теперь я подумываю написать собственную хэш-функцию в перегруженной функции, но думаю, что будет проще использовать вызов функции.
Можете ли вы дать минимальный, но полный пример, который воспроизводит вашу проблему? –
Документация по упоминанию «GetHashCode» не использует стандартную реализацию этого метода как уникальный идентификатор объекта для целей хеширования »(см. Https://msdn.microsoft.com/en-us/library/system.object.gethashcode (v = vs.110) .aspx) –
Для GetHashCode() не требуется «шифровать» значение. Если, например, K является * int *, то да, вы получите то же значение обратно. Идеальный хэш, очень желательно. –