Класс Hashtable
Класс Hashtable
Типизированные массивы
Типизированные массивы
Типизированные массивы
Типизированные массивы
178.50K
Category: programmingprogramming

Класс Hashtable

1. Класс Hashtable

Хеширование – необратимое преобразование данных.
Класс Hashtable обеспечивает работу с парой списков: списком
ключей и списком значений. Элементы списка ключей
используются для доступа к элементам списка значений (пример
– поиск по ключевому слову, хеш-тегу). Список ключей хранится в
свойстве Keys данного класса, а список значений – в свойстве
Values. Класс Hashtable предоставляет возможность работы с
каждым из указанных списков в отдельности.
Заполнение хеш-таблицы осуществляется при помощи метода
Add(), параметрами которого являются ключ и соответствующее
ему значение (могут являться объектами любого класса,
поскольку имеют тип Object).

2. Класс Hashtable

Пример работы с классом Hashtable:
Hashtable h = new Hashtable();
h.Add("Иван Иванов", new Person("Иван", "Иванов") );
h.Add("Петр Петров", new Person("Петр", "Петров") );
h.Add("Семен Сидоров", new Person("Семен", "Сидоров") );
// Выводим фамилии персон из списка значений
foreach (Person p in h.Values) Console.WriteLine(p.LastName);
// Выводим список пар «ключ – значение»
foreach (Object k in h.Keys)
{
Person p = (Person) h[k];
Console.WriteLine("Ключ: " + k + ", значение: " + p);
}

3. Типизированные массивы





Массивы-списки из классов ArrayList, Queue, Stack, Hashtable
позволяют хранить данные любого типа (экземпляры класса
Object). Это требует осторожности при работе с элементами
массива-списка, поскольку некорректное приведение типов
может вызвать ошибку работы программы.
Если заранее известно, что список должен хранить объекты
определённого типа, то лучше воспользоваться возможностями
типизированных массивов. В этом случае работа с элементами
массива упрощается, поскольку исчезает необходимость их
приведения к заданному типу, а система получает возможность
отслеживать корректность программного кода.
Типизированные массивы могут быть объявлены при помощи
следующих классов:
List – однонаправленный список (текущий элемент списка
содержит ссылку на следующий за ним элемент).
LinkedList – двунаправленный список (текущий элемент списка
содержит ссылки на предыдущий и следующий за ним элементы).
Queue – классическая очередь (из элементов одного типа).
Stack – классический стек (из элементов одного типа).

4. Типизированные массивы

Объявление переменной типизированного массива-списка:
КлассСписка <ТипЭлементов> ИмяПеременнойСписка;
Классом списка может выступать любой из классов List,
LinkedList, Queue и Stack.
В качестве типа элементов списка может быть выбран любой
известный тип данных (в том числе пользовательский класс).
После
объявления
переменную
списка
следует
инициализировать:
ИмяПеременнойСписка = new КлассСписка <ТипЭлементов> ();

5. Типизированные массивы

Пример работы с типизированным массивом:
List <Person> arr = new List<Person> ();
arr.Add( new Person("Иван", "Иванов") );
arr.Add( new Person("Петр", "Петров") );
arr.Add( new Person("Семен", "Сидоров") );
arr[2].FirstName = "Станислав"; // Меняем имя персоны
// Выводим фамилии персон из списка значений
foreach (Person p in arr)
Console.WriteLine(p.FirstName + " " + p.LastName);

6. Типизированные массивы

Из приведённого примера видно, что приведение типов при
работе с элементами типизированного массива не требуется,
поскольку тип элементов был объявлен заранее при создании
списка.
В результате компилятор получает возможность отслеживать
корректность работы с памятью и для следующей строки выдаст
ошибку:
arr.Add( "Иван Иванов" ); // Ошибка
Замечание. Допускается добавление в типизированный массив
наследников основного класса (в нашем примере это объекты,
классы которых являются потомками класса Person).
Попробуем поменять в нашем примере тип элементов массива:
List <Object> arr = new List<Object> ();
В этом случае возникнет ошибка в строке:
arr[2].FirstName = "Станислав"; // Ошибка
Ошибку можно исправить приведением элемента к типу Person:
( (Person) arr[2]).FirstName = "Станислав";
English     Русский Rules