Опубликован: 05.08.2007 | Уровень: специалист | Доступ: платный
Лекция 9:

Объект DataView. Вывод связанных таблиц

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >

Класс 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).

  Приложение HashtableExample

Рис. 9.20. Приложение HashtableExample

В программном обеспечении к курсу вы найдете приложение Hashtable Example (Code\Glava4\ HashtableExample ).

Класс ArrayList

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

Таблица 9.2. Приложение ClassArrayList
Листинг приложения 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.

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

В программном обеспечении к курсу вы найдете приложение ClassArray List (Code\Glava4\ ClassArrayList).

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Александра Тимофеева
Александра Тимофеева
Украина, Киев
Bakke Aleksander
Bakke Aleksander
Россия, Mуниципальный округ N 4