Словарь Hashtable
В отличие от массивов, где каждый элемент идентифицируется своим индексом, в словарях для идентификации элементов используются ключи. В качестве ключей могут выступать как текстовые строки, так и числа. Для большей наглядности естественно использовать строки более целесообразно.
Создание словаря
Для создания словарей предусмотрено несколько конструкторов.
Конструктор без параметров
Конструктор без параметра позволяет создать пустой словарь с параметрами по умолчанию.
Hashtable myTable=new Hashtable();
В скобочках в конце строки можно указать начальную емкость словаря, по мере надобности емкость будет увеличиваться автоматически при добавлении нового элемента.
Добавление элементов в словарь:
Для добавления элементов в словарь используется метод Add
Пример:
Hashtable myTable = new Hashtable();
myTable.Add("Petrov","8-923-225-25-25");
myTable.Add("Sidorov", "8-913-931-39-31");
В данном примере мы создали словарь myTable и добавили в него две пары элементов ключь-значение (Роль коюча выполняет фамилия, роль значения – номер телефона).
Вывод элементов словаря на консоль
Для получения элементов словаря используется итератор класса System.Collections.IdictionaryEnumerator.
Рассмотрим пример его использования, выведем созданные в предыдущем примере список на экран.
IDictionaryEnumerator myEnumerator = myTable.GetEnumerator();
while (myEnumerator.MoveNext())
{
System.Console.WriteLine("{0}-{1}", myEnumerator.Key, myEnumerator.Value);
}
Сначала создается итератор при помощи метода GetEnumerator.
Для получения пар ключ-значение создается цикл while. Ключ извлекается при помощи свойства Key, а значение при помощи свойства Value.
При необходимости итератор можно установить в начало словаря при помощи метода Reset.
Изменение значения по ключу
Для изменения значения по известному ключу нужно просто переприсвоить значение списка с соответствующим ключом.
Пример:
myTable["Petrov"] = "67464";
Поиск по ключу
После добавления элементов в словарь их можно извлекать из словаря при помощи свойства Item. Это свойство доступно через квадратные скобки. На самом деле работает так же как в обычном массиве.
Пример:
Допустим нам нужно из готового словаря вывести номер телефона Петрова(используем все тотже список, который создали в нгачале статьи)
System.Console.WriteLine(“Телефон Петрова: {0}, myTable[“Petrov”]”);
Возникают ситуации, когда вводится ключь которого нет в списке, тогда возникает исключение null. Для того, чтобы избежать это исключение предварительно нужно проверять присутствует ли такой элемент в списке или нет. Проверка выполняется при помощи метода Contains, который принимает два значения: True или False.
Пример:
if(myTable.Contains(“Petrov”))
{
System.Console.WriteLine(“Телефон Петрова: {0}, myTable[“Petrov”]”);
}
Если значение с ключом “Petrov” есть в словаре, то оно выведется на экран.
Для проверки содержимого словаря можно также использовать методы:
ContainsKey – проверяет есть ли элемент с заданным ключем.
ContainsValue – проверяет есть ли элемент с заданным значением.
Удаление элементов из словаря
Для полной очистки словаря используется метод Clear
myTable.Clear();
Для удаления элемента с заданным ключом используется метод Remove.
Допустим нам нужно удалить запись с ключом “Petrov”, для этого пишем
myTable.Remove(“Petrov”);
Размер словаря
Текущий размер словаря можно узнать при помощи свойства Count
myTable.Count;