Керівництво c #, клас hashtable

Клас Hashtable призначений для створення колекції, в якій для зберігання її елементів служить хеш-таблиця. Інформація зберігається в хеш-таблиці за допомогою механізму, званого хешированием. При хешуванні для визначення унікального значення, званого хеш-кодом, використовується інформаційний вміст спеціального ключа. Отриманий в результаті хеш-код служить в якості індексу, за яким в таблиці зберігаються дані, які розшукуються, відповідні заданому ключу. Перетворення ключа в хеш-код виконується автоматично, і тому сам хеш-код взагалі недоступний користувачеві. Перевага хеширования полягає в тому, що воно забезпечує сталість часу виконання операцій пошуку, вилучення та установки значень незалежно від величини масивів даних.

У класі Hashtable реалізуються інтерфейси IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback і ICloneable. У класі Hashtable визначено чимало конструкторів. Нижче наведені найбільш часто використовувані конструктори цього класу:

У першій формі створюється створюваний за замовчуванням об'єкт класу Hashtable. У другій формі створюваний об'єкт типу Hashtable инициализируется елементами з колекції d. У третій формі створюваний об'єкт типу Hashtable инициализируется, враховуючи ємність колекції, що задається параметром capacity. І в четвертій формі створюваний об'єкт типу Hashtable инициализируется, враховуючи задану ємність capacity і коефіцієнт заповнення loadFactor. Коефіцієнт заповнення, іноді ще званий коефіцієнтом завантаження. повинен знаходитися в межах від 0.1 до 1.0. Він визначає ступінь заповнення хеш-таблиці до збільшення її розміру. Зокрема, таблиця розширюється, якщо кількість елементів виявляється більше ємності таблиці, помноженої на коефіцієнт заповнення. У тих конструкторах, які не приймають коефіцієнт заповнення в якості параметра, цей коефіцієнт за замовчуванням вибирається рівним 1.0.

У класі Hashtable визначається ряд власних методів, крім тих, що вже оголошені в інтерфейсах, які в ньому реалізуються. Деякі з найбільш часто використовуваних методів цього класу наведено нижче. Зокрема, для того щоб визначити, чи міститься ключ в колекції типу Hashtable, викликається метод ContainsKey (). А для того щоб з'ясувати, чи зберігається в такій колекції конкретне значення, викликається метод ContainsValue (). Для перерахування вмісту колекції типу Hashtable служить метод GetEnumerator (), який повертає об'єкт типу IDictionaryEnumerator. Нагадаємо, що IDictionaryEnumerator - це нумератори, який використовується для перерахування вмісту колекції, в якій зберігаються пари "ключ-значення".

Повертає логічне значення true, якщо в викликає колекції типу Hashtable міститься ключ, а інакше - логічне значення false

Повертає логічне значення true, якщо в викликає колекції типу Hashtable міститься значення, а інакше - логічне значення false

Повертає для викликає колекції типу Hashtable Нумератор типу IDictionaryEnumerator

Повертає синхронізований варіант колекції типу Hashtable, переданої як параметр

У класі Hashtable доступні також відкриті властивості, певні в тих інтерфейси, які в ньому реалізуються. Особлива роль належить двом властивостям, Keys і Values. оскільки з їх допомогою можна отримати ключі або значення з колекції типу Hashtable. Ці властивості визначаються в інтерфейсі IDictionary наступним чином:

У класі Hashtable не підтримуються впорядковані колекції, і тому ключі або значення виходять з колекції в довільному порядку. Крім того, в класі Hashtable є захищене властивість EqualityComparer. А два інших властивості, hep і comparer, вважаються застарілими.

Давайте розглянемо приклад:

Схожі статті