Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

овп2 / ОВП2_коллекции1

.pdf
Скачиваний:
5
Добавлен:
03.03.2016
Размер:
317.39 Кб
Скачать

Классы обобщенных коллекций

SortedList<TKey, TValue>

Создает отсортированный список из пар "ключ-значение". Обеспечивает такие же функциональные возможности, как

инеобобщенный класс SortedList

SortedSet<T>

Создает отсортированное множество

Stack<T>

Создает стек. Обеспечивает такие же функциональные возможности, как и необобщенный класс Stack

Класс ArrayList

Массив типа ArrayList создается с первоначальным размером.

Если этот размер превышается, то массив автоматически расширяется.

При удалении объектов из такого массива он автоматически сокращается.

Многие способы применения коллекций класса ArrayList распространяются и на другие коллекции, в том числе и на обобщенные.

В классе ArrayList реализуются интерфейсы ICollection, IList, IEnumerable и ICloneable.

Конструкторы класса ArrayList: public ArrayList()

public ArrayList(ICollection с) public ArrayList(int capacity)

Класс ArrayList

Некоторые из наиболее часто используемых методов класса ArrayList :

AddRange()

Добавляет элементы из коллекции в конец вызывающей коллекции типа ArrayList

BinarySearch()

Выполняет поиск в вызывающей коллекции значения. Возвращает индекс найденного элемента. Если искомое значение не найдено, возвращает отрицательное значение. Вызывающий список должен быть отсортирован

СоруТо()

Копирует содержимое вызывающей коллекции в массив, который должен быть одномерным и совместимым по типу с элементами коллекции

FixedSize()

Заключает коллекцию в оболочку типа ArrayList с фиксированным размером и возвращает часть вызывающей коллекции типа ArrayList,которая начинается с указанного элементаи включает количество элементов, определяемое параметром. Возвращаемый объект ссылается на те же элементы, что и вызывающий объект.

Класс ArrayList

Некоторые из наиболее часто используемых методов класса ArrayList :

IndexOf()

Возвращает индекс первого вхождения объекта в вызывающей коллекции. Если искомый объект не обнаружен, возвращает значение -1

InsertRange()

Вставляет элементы коллекции в вызывающую коллекцию, начиная с элемента, указываемого по индексу

Readonly()

Заключает коллекцию в оболочку типа ArrayList, доступную только для чтения, и возвращает результат

RemoveRange()

Удаляет часть вызывающей коллекции, начиная с элемента, указываемого по индексу index, и включая количество элементов, определяемое параметром count

Sort()

Сортирует вызывающую коллекцию по возрастанию

Класс ArrayList

Пример. В текстовом файле записана информация о людях (фамилия, имя, отчество, возраст, вес через пробел). Вывести на экран информацию о людях, отсортированную по возрасту.

using System;

using System.Collections; using System.IO;

using System.Text; namespace MyProgram{

class Program{

public struct one //структура для хранения данных об одном человеке{

public string f; public string i; public string o; public int age; public float massa;

}

Класс ArrayList

public class SortByAge : IComparer //реализация стандартного интерфейса {

int IComparer.Compare(object x, object y) //переопределение метода Compare{

one t1 = (one)x; one t2 = (one)y;

if (t1.age > t2.age) return 1; if (t1.age < t2.age) return -1; return 0;

}

}

static void ArrayPrint(string s, ArrayList a) { Console.WriteLine(s);

foreach (one x in a)

Console.WriteLine(x.f + "\t"+ x.i + "\t"+ x.o + "\t"+x.age + "\t" + x.massa);

}

Класс ArrayList

static void Main(string[] args) {

StreamReader fileIn = new StreamReader("t.txt",Encoding.GetEncoding(1251));

string line; one a;

ArrayList people = new ArrayList(); string[] temp = new string[3];

while ((line=fileIn.ReadLine())!=null) { temp = line.Split(' ');

a.f = temp[0]; a.i = temp[1]; a.o = temp[2]; a.age = int.Parse(temp[3]);

a.massa = float.Parse(temp[4]); people.Add(a);

}

fileIn.Close();

ArrayPrint("Исходные данные: ", people);

people.Sort(new Program.SortByAge()); //вызов сортировки ArrayPrint("Отсортированные данные: ", people);

}

}

Класс Hashtable

Класс Hashtable предназначен для создания коллекции, в которой для хранения объектов используется хэш-таблица. В хэш-таблице для хранения информации используется механизм, именуемый хэшированием (hashing).

Преобразование ключа в хэш-код выполняется автоматически. Преимущество хэширования — в том, что оно позволяет сокращать время выполнения таких операций, как поиск, считывание и запись данных, даже для больших объемов информации.

Класс Hashtable реализует стандартные интерфейсы

IDictionary,

ICollection,

IEnumerable,

ISerializable,

IDeserializationCallback

ICloneable.

Размер хэш-таблицы может динамически изменяться. Размер таблицы увеличивается тогда, когда количество элементов превышает значение, равное произведению вместимости таблицы и ее коэффициента заполнения, который может принимать значение на интервале от 0,1 до 1,0. По умолчанию установлен коэффициент равный 1,0.

Класс Hashtable

В классе Hashtable определено несколько конструкторов:

public Hashtable()

//создает пустую хэш-таблицу

// строит хэш-таблиц, которая инициализируется элементами коллекции с

public Hashtable(IDictionary с)

public Hashtable(int capacity) //создает хэш-таблицу с вместимостью capacity

//создает хэш-таблицу вместимостью capacity и коэффициентом заполнения n

public Hashtable(int capacity, float n)

Класс Hashtable

В классе Hashtable определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса приведены ниже

ContainsKey()

Возвращает логическое значение true, если в вызывающей коллекции типа Hashtable содержится ключ, а иначе — логическое значение false

ContainsValue()

Возвращает логическое значение true, если в вызывающей коллекции типа Hashtable содержится значение, а иначе — логическое значение false

GetEnumerator()

Возвращает для вызывающей коллекции типа Hashtable

перечислитель типа IDictionaryEnumerator

Соседние файлы в папке овп2