Я знаю, что стабильная структура данных будет хранить пару ключ-значение. И этот ключ сортируется на основе значения хеш-функции.

В то время как отсортированный список тот же, но отсортирован по фактическому значению ключа, а не по хешу.

Какова цель хеш-таблицы или, другими словами, в чем преимущество сортировки ключа по хеш-значению?

c#
1
variable 26 Ноя 2021 в 22:58
6
Дело не в сортировке (это случайность и артефакт реализации), а в поиске. Но в целом вы должны использовать Dictionary<Tkey, TValue> вместо Hashtable.
 – 
Mark Rotteveel
26 Ноя 2021 в 23:01
И этот ключ отсортирован - это не совсем правильно
 – 
Caius Jard
26 Ноя 2021 в 23:19

1 ответ

Лучший ответ

Хеш-таблицы доступны в O (1), а отсортированный список - в O (log n).

Я также дам ответ в сравнении словаря и HashTable. Хотя словарь концептуально представляет собой хеш-таблицу, между ними есть некоторые существенные различия.

Вы хотели бы использовать класс Dictionary вместо класса Hashtable, поскольку Dictionary является универсальным типом, а Hashtable - нет. Таким образом, вы действительно получаете безопасность типов, используя Dictionary , потому что вы не можете вставлять в него какой-либо случайный объект и вам не нужно приводить значения, которые вы извлекаете.

Еще одно замечание: реализация Dictionary в .NET Framework фактически основана на Hashtable. вы можете проверить это, взглянув на реализацию HashTable - https: // linksource.microsoft.com/#mscorlib/system/collections/hashtable.cs

2
Ran Turner 26 Ноя 2021 в 23:45