2010-12-12 2 views
4

Если открытая адресация, как генерируется последовательность зондов. pls дают ссылкиТип Hashtable в C# реализован с использованием цепочки или открытой адресации?

+2

Hashtable или словарь? – SLaks

+3

Я бы наложил на него деньги, используя цепочку. Эффективная открытая адресация обычно требует двух функций хэширования, тогда как объекты в CLR могут гарантировать только одно (GetHashCode()). Более того, удаление из хеш-таблицы с использованием открытой адресации является болью. Существуют связанные схемы, но цепочки не слишком важны на практике (конечно, не в соответствии с критериями, которые я провел несколько лет назад). – Rafe

ответ

4

Он использует открытую адресацию (или, как мы говорили раньше, «закрытое хэширование») с двойным хэшированием для генерации последовательности адресов зонда. GetHashCode() определяет первый индекс зонда; интервал также является функцией GHC().

Вы можете увидеть это сами, если вы перейдете на исходный код System.Collections.Hashtable.Add(), например. [Http://referencesource.microsoft.com/].

Счастливый взлом!

1

Hashtable in .net framework использует открытую адресацию или технологию двойного хэширования, в то время как словарь использует цепочку в качестве метода предотвращения столкновений.

See this link @ MSDN

Смежные вопросы