Читать в оригинале

<< Предыдущая Оглавление Следующая >>


4.4.5. Вспомогательные классы

 

Класс HashTable

 

Hashtable - это структура данных, предназначенная для осуществления быстрого поиска. Это достигается за счет связывания ключа с каждым объектом, который сохраняется в таблице. Hashtable - это объект, в котором хранятся пары значений: так называемый ключ и само значение. Элементы каждой коллекции - и ключей (Keys), и значений (Values) - являются типом object, а это значит, что в качестве индекса элемента в привычном понимании теперь выступает не int, а именно object!

Создадим новое консольное приложение. Листинг этого приложения:

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("Киpилловa", 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 требует два параметра: значение первого аргумента будет выступать в роли ключа для элемента, которым является значение второго аргумента.

Результатом выполнения программы будет вывод фамилии абонента, с заданным номером телефона (ключом) (рис. 134).

Рис. 134. Работа с классом HashTable.

 

Класс ArrayList

 

Класс ArrayList, подобно классу Hashtable, определенный в пространстве имен System.Collections, представляет собой один из чрезвычайно простых и удобных способов работы с наборами элементов. Объекты этого класса не имеют фиксированного размера и при необходимости могут менять его. Объект ArrayList при своем создании резервирует место в памяти для 16 элементов - указателей на тип object. При добавлении семнадцатого элемента размерность ArrayList увеличивается до 32 элементов. Обращение к объектам осуществляется аналогично обращению к элементам массива.

Создадим новое консольное приложение. Ниже приводится его полный его листинг.

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("Удaлeниe элемента:\n");
                        foreach (object element in ar) {
                                   Console.WriteLine(element);
                        }
                        ar.Insert(6, "XYZ");
                        Console.WriteLine("Вставка элемента \nHa заданную  позицию\n");
                        foreach (object element in ar) {
                                   Console.WriteLine(element);
                        }
                        ar.Clear();
                        Console.WriteLine("Удaлeниe всех элементов:\n");
                        foreach (object element in ar) {
                                   Console.WriteLine(element);
                        }
            } // end Main()
          } // end class
} // end namespace

Результат работы приложения приведен на рисунке 135.

Рис. 135. Работа с классом ArrayList

Из рисунка 135 видно, что элементами ArrayList могут быть любые значения, поскольку он содержит в себе указатели на тип object. Для возвращения значений из массива необходимо осуществлять явное преобразование типов.

 



<< Предыдущая Оглавление Следующая >>