Как хеш-значение объекта хранится в словаре? - PullRequest
1 голос
/ 20 сентября 2010

Мой друг недавно задал следующий вопрос в интервью, и я ищу для него окончательный ответ.

Как хэш-значение объекта хранится в словаре?

Приветствия заранее!

1 Ответ

6 голосов
/ 20 сентября 2010

Не все словари работают одинаково. Я собираюсь предположить, что вы имеете в виду хеш-таблицу, а именно класс Dictionary. В этом случае значение хеша не сохраняется нигде в структуре данных. Он используется только для поиска ведер. Используемая конкретная реализация поддерживает два массива. Один для ведер и один для записей. Элементы всегда добавляются в следующий доступный слот в массиве записей. Хеш-значение не имеет никакого влияния на это вообще. Массив корзины содержит индексы в массиве записей. Значение хеш-функции используется для размещения соответствующего слота в массиве сегментов, а затем из него можно извлечь индекс в массив ввода. Отличительной особенностью этой реализации является то, что перечисления класса Dictionary расположены во временном порядке (при условии, конечно, что после вставок нет удалений). Это, конечно, деталь реализации, на которую никогда не следует полагаться, но это интересный артефакт используемого алгоритма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...