Украина, Киев |
Объект DataView. Вывод связанных таблиц
Класс HashTable
Если вы подзабыли описание этого класса, давайте вспомним его. Hashtable - это структура данных, предназначенная для осуществления быстрого поиска. Это достигается за счет связывания ключа с каждым объектом, который сохраняется в таблице. Hashtable - это объект, в котором хранятся пары значений: так называемый ключ и само значение. Элементы каждой коллекции - и ключей ( Keys ), и значений ( Values ) - являются типом object, а это значит, что в качестве индекса элемента в привычном понимании теперь выступает не int, а именно object! Создайте новое консольное приложение и назовите его HashtableExample. Листинг этого приложения:
using System; using System.Collections; namespace HashtableExample { class Statistics { public Hashtable AbonentList; public Statistics() { AbonentList = new Hashtable(); } } class Abonent { public string Name; public int Phone; public Abonent(string n, int p) { Name = n; Phone = p; } } class Class1 { [STAThread] static void Main(string[] args) { Abonent a1 = new Abonent("Иванов", 1234567); Abonent a2 = new Abonent("Николаев", 3216547); Abonent a3 = new Abonent("Андреева", 685472); Abonent a4 = new Abonent("Волков", 1234500); Abonent a5 = new Abonent("Кириллова", 3245637); Statistics myStatistics = new Statistics(); myStatistics.AbonentList.Add(a1.Phone, a1.Name); myStatistics.AbonentList.Add(a2.Phone, a2.Name); myStatistics.AbonentList.Add(a3.Phone, a3.Name); myStatistics.AbonentList.Add(a4.Phone, a4.Name); myStatistics.AbonentList.Add(a5.Phone, a5.Name); Console.WriteLine(myStatistics.AbonentList[685472]); } } }
В методе Main создаются пять объектов класса Abonent, которые затем добавляются в Hashtable AbonentList ( myStatistics.AbonentList ) в коллекцию Values. Ключами для этих элементов будут служить значения их полей Phone. Обратите внимание, что метод Add() класса Hashtable требует два параметра: значение первого аргумента будет выступать в роли ключа для элемента, которым является значение второго аргумента.
Результатом выполнения программы будет вывод фамилии абонента, с заданным номером телефона (ключом) (рис. 9.20).
В программном обеспечении к курсу вы найдете приложение Hashtable Example (Code\Glava4\ HashtableExample ).
Класс ArrayList
Класс ArrayList, подобно классу Hashtable, определенный в пространстве имен System.Collections, представляет собой один из чрезвычайно простых и удобных способов работы с наборами элементов. Объекты этого класса не имеют фиксированного размера и при необходимости могут менять его. Объект ArrayList при своем создании резервирует место в памяти для 16 элементов - указателей на тип object. При добавлении семнадцатого элемента размерность ArrayList увеличивается до 32 элементов. Обращение к объектам осуществляется аналогично обращению к элементам массива. Создайте новое консольное приложение, назовите его "ClassArrayList". В таблице 9.2 приводится полный его листинг:
Листинг приложения ClassArrayList | Результат работы приложения (рис. 9.21) |
---|---|
using System; using System.Collections; namespace ClassArrayList { class Class1 { [STAThread] static void Main(string[] args) { ArrayList ar = new ArrayList(); ar.Add("A"); ar.Add("AB"); ar.Add("ABC"); ar.Add("ABCD"); ar.Add("ABCDE"); ar.Add("ABCDEF"); ar.Add("ABCDEFG"); ar.Add("ABCDEFGH"); ar.Add(""); ar.Add(""); Console.WriteLine("Вывод элементов массива:\n"); foreach (object element in ar) { Console.WriteLine(element); } ar.Remove("ABCD"); Console.WriteLine("Удаление элемента:\n"); foreach (object element in ar) { Console.WriteLine(element); } ar.Insert(6, "XYZ"); Console.WriteLine("Вставка элемента \n на заданную позицию:\n"); foreach (object element in ar) { Console.WriteLine(element); } ar.Clear(); Console.WriteLine("Удаление всех элементов:\n"); foreach (object element in ar) { Console.WriteLine(element); } } } } |
Из рис. 9.21 видно, что элементами ArrayList могут быть любые значения, поскольку он содержит в себе указатели на тип object. Для возвращения значений из массива необходимо осуществлять явное преобразование типов.
В программном обеспечении к курсу вы найдете приложение ClassArray List (Code\Glava4\ ClassArrayList).