Иллюстрированный самоучитель по Visual Basic .NET

Хэш-таблицы

Простые и динамические массивы удобны прежде всего тем, что вы можете напрямую обратиться к любому элементу по индексу. Конечно, для этого необходимо знать индекс. В следующей структуре данных – хэш-таблице – произвольный доступ к данным осуществляется по ключу. Допустим, у вас имеется хэш-таблица с именем theData. Команда theData("Bill 's Address") позволяет извлечь из хэш-таблицы нужный элемент без циклического перебора всего содержимого. Хэш-таблицы очень удобны в ситуациях, когда вы хотите получить быстрый доступ к значению по связанному с ним уникальному атрибуту, то есть ключу.

Разумеется, программирование хэш-таблицы – задача непростая [Для этого необходимо построить хорошую функцию хэширования для вычисления индекса данных по ключу, а также решить неизбежную проблему коллизий, то есть совпадения хэш-кодов у двух разных элементов. Даже терминология выглядит устрашающе…], но, к счастью, эта работа уже выполнена за вас разработчиками .NET Framework.

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

В табл. 4.4 перечислены важнейшие методы класса Hashtable (за полным списком обращайтесь к электронной документации).

Примечание
Методы класса HashTable учитывают регистр символов в строковых ключах, и действие команды Option Compare Text на них не распространяется. О том, как создать хэш-таблицу, игнорирующую регистр символов, рассказано в главе 5
.

Таблица 4.4. Важнейшие методы класса Hashtable.

Имя Описание
Add Добавляет новую пару "ключ/значение" в хэш-таблицу
Clear Удаляет из хэш-таблицы все содержимое
ContainsKey Проверяет, содержит ли хэш-таблица заданный ключ (с учетом регистра символов)
ContainsValue Проверяет, содержит ли хэш-таблица заданное значение (с учетом регистра символов)
CopyТо Копирует элементы хэш-таблицы в массив
Count Возвращает количество пар "ключ/значение" в хэш-таблице
Item Свойство по умолчанию. Получает или задает значение, связанное с указанным ключом
Keys Возвращает все ключи хэш-таблицы в виде коллекции, содержимое которой перебирается в цикле For-Each
Remove Удаляет из хэш-таблицы значение с заданным ключом
Values Возвращает все значения хэш-таблицы в виде коллекции, содержимое которой перебирается в цикле For-Each
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.