C # Как хеш-таблица сжимается, когда элементы удаляются из хеш-таблицы? - PullRequest
1 голос
/ 19 ноября 2008

Я ищу, чтобы выяснить логику, если она есть, которая сокращает хеш-таблицу в c #, когда из нее удаляются элементы.

С уважением Хариш

Ответы [ 3 ]

4 голосов
/ 19 ноября 2008

c # хеш-таблицы не уменьшаются; они только растут. Логика важна, потому что алгоритм перефразирования ОЧЕНЬ дорогой для запуска; в большинстве случаев пространство, сэкономленное путем перефразирования в меньшую хэш-таблицу, будет полностью переполнено стоимостью перефразировки. В частности, в автоматическом режиме, когда любое удаление из хеш-таблицы не может быть «последним» удалением (невозможно определить из хеш-таблицы на алгоритмической основе), потенциальное значение просто не стоит этого.

Если ваша хеш-таблица значительно сокращается, и вы действительно хотите освободить пространство, я рекомендую просто создать новый (с правильным размером) и скопировать в него элементы.

1 голос
/ 19 ноября 2008

Кроме того, поскольку вы используете .net2.0 или новее, вам, вероятно, следует использовать Dictionary<K,V> вместо HashTable.

0 голосов
/ 19 ноября 2008

Единственное указание изменений размера для хеш-таблицы в документации - это когда коэффициент загрузки превышен, а размер хеш-таблицы увеличен. Нет никаких упоминаний о сокращении скорости.

Существует некоторая дополнительная информация о коэффициенте загрузки на MSDN .

...