Видео: Разница между словарем и хеш-таблицей
2024 Автор: Mildred Bawerman | [email protected]. Последнее изменение: 2023-12-16 08:42
Словарь против Hashtable
Словарь является типизированным (поэтому типы значений не нуждаются в блокировке), а хеш-таблица - нет (поэтому типы значений нуждаются в блокировании). У Hashtable более приятный способ получения значения, чем у словаря IMHO, потому что он всегда знает, что значение является объектом. Хотя, если вы используете. NET 3.5, легко написать расширенный метод для словаря, чтобы добиться аналогичного поведения.
Класс Hashtable - это особый тип класса словаря, который использует целочисленное значение (называемое хешем) для помощи в хранении своих ключей. Класс Hashtable использует хэш для ускорения поиска определенного ключа в коллекции. Каждый объект в. NET является производным от класса Object. Этот класс поддерживает метод GetHash, который возвращает целое число, однозначно идентифицирующее объект. Класс Hashtable в целом представляет собой очень эффективный класс. Единственная проблема с классом Hashtable состоит в том, что он требует немного чрезмерных усилий, а для небольших коллективов (менее десяти элементов) чрезмерные затраты могут снизить производительность.
Есть еще одна важная разница между HashTable и Dictionary. Если вы используете индексаторы для получения значения вне HashTable, HashTable успешно вернет null для несуществующего элемента, тогда как Dictionary выдаст ошибку, если вы попытаетесь получить доступ к элементу с помощью индексатора, которого не существует в Dictionary.
HashTable - это базовый класс со слабой типизацией; абстрактный класс DictionaryBase строго типизирован и внутренне использует HashTable.
Странная вещь, замеченная в Dictionary, заключается в том, что когда мы добавляем несколько записей в Dictionary, порядок, в котором добавляются записи, сохраняется. Таким образом, если вы заглянете в Словарь, вы получите записи в том же порядке, в котором вы их вставили. Принимая во внимание, что это неверно с обычным HashTable, когда вы добавляете те же записи в Hashtable, порядок не сохраняется. Если «Dictionary основан на Hashtable» верно, почему Dictionary поддерживает порядок, а HashTable - нет?
Что касается того, почему они ведут себя по-разному, это потому, что Generic Dictionary реализует хэш-таблицу, но не основан на System. Cоllectiоns. Hashtable. Реализация универсального словаря основана на указании пар ключ-значение из списка. Затем они индексируются с помощью сегментов хеш-таблицы для случайного доступа, но когда он возвращает перечислитель, он просто просматривает список в последовательном порядке - это будет порядок вставки, поскольку записи не используются повторно.
Рекомендуем:
Разница между симметричными и асимметричными верхними молекулами
Ключевое различие между симметричными и асимметричными молекулами верха состоит в том, что молекулы симметричного верха имеют одну ось собственного вращения и два момента инерции
Разница между собой и между собой
Друг друга против друг друга В английском языке есть взаимные местоимения, которые используются, чтобы говорить о взаимных чувствах. Два таких профи
Разница между энциклопедией и словарем
Энциклопедия против словаря Энциклопедия и словарь - это два слова, которые часто путают, когда дело доходит до их использования и значений. Энциклопедия - это
Разница между ключевыми различиями между металлическими и неметаллическими минералами
Ключевое различие - металлические и неметаллические минералы Минерал - это встречающийся в природе твердый и неорганический компонент с определенной химической формулой и
Разница между словарем и тезаурусом
Словарь против тезауруса Хотя и словарь, и тезаурус используются для изучения значений слов в языке, между d