Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Екзамен з комп. арх..doc
Скачиваний:
4
Добавлен:
17.09.2019
Размер:
449.02 Кб
Скачать

23. Характеристика generic-колекцій .Net

CLR поддерживает возможность повторного использования кода (алгоритма).

Преимущества обобщенных контейнеров

Более высокая продуктивность поскольку отстствуют boxing, unboxing

Более безопасные к типам поскольку могут иметь объекты только определенных типов

Обобщенные типы (generics) позволяют при описании классов, структур, методов и интерфейсов использовать параметризованные параметры (не указывать тип параметра в момент написания кода). Тип параметра определяется в момент объявления переменной соответствующего типа.

Пространство имен System.Collections.Generic содержит интерфейсы и классы, определяющие универсальные коллекции, которые позволяют пользователям создавать строго типизированные коллекции, обеспечивающие повышенную производительность и безопасность типов по сравнению с неуниверсальными строго типизированными коллекциями.

Comparer<T> Представляет базовый класс для реализаций универсального интерфейса IComparer<T>.

LinkedList<T> Представляет двусвязный список.

Dictionary<TKey, TValue> Представляет коллекцию ключей и значений.

List<T> Представляет строго типизированный список объектов, доступных по индексу. Поддерживает методы для поиска по списку, выполнения сортировки и других операций со списками.

Queue<T>Представляет коллекцию объектов, основанную на принципе "первым поступил — первым обслужен".

Stack<T> Представляет коллекцию экземпляров одного и того же произвольного типа, имеющую переменный размер и основанную на принципе "последним поступил — первым обслужен".

24. Колекція LinkedList. Методи та властивості.

Представляет двусвязный список.

T - Задает тип элемента в связанном списке.

public class LinkedList<T> : ICollection<T>, IEnumerable<T>, ICollection, IEnumerable, ISerializable, IDeserializationCallback

Свойства

Count Возвращает число узлов, которое в действительности хранится в LinkedList<T>.

First Получает первый узел объекта LinkedList<T>.

Last Получает последний узел объекта LinkedList<T>.

Методы

AddAfter(LinkedListNode<T>, LinkedListNode<T>) - Добавляет указанный новый узел после указанного существующего узла в LinkedList<T>.

AddAfter(LinkedListNode<T>, T) - Добавляет новый узел, содержащий указанное значение, после указанного существующего узла в LinkedList<T>.

AddBefore(LinkedListNode<T>, LinkedListNode<T>) - Добавляет указанный новый узел перед указанным существующим узлом в LinkedList<T>.

AddBefore(LinkedListNode<T>, T) - Добавляет новый узел, содержащий указанное значение, перед указанным существующим узлом в LinkedList<T>.

AddFirst(T) - Добавляет новый узел, содержащий указанное значение, в начало LinkedList<T>.

AddFirst(LinkedListNode<T>) - Добавляет указанный новый узел в начало LinkedList<T>.

AddLast(T) - Добавляет новый узел, содержащий указанное значение, в конец LinkedList<T>.

AddLast(LinkedListNode<T>) - Добавляет заданный новый узел в конец LinkedList<T>.

Clear - Удаляет все узлы из LinkedList<T>.

Contains - Определяет, принадлежит ли значение объекту LinkedList<T>.

Finalize - Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора. (Унаследовано от Object.)

Find - Находит первый узел, содержащий указанное значение.

FindLast - Находит последний узел, содержащий указанное значение.

GetEnumerator - Возвращает перечислитель, осуществляющий перебор элементов LinkedList<T>.

GetObjectData - Реализует интерфейс System.Runtime.Serialization.ISerializable и возвращает данные, необходимые для сериализации экземпляра класса LinkedList<T>.

OnDeserialization - Реализует интерфейс System.Runtime.Serialization.ISerializable и вызывает событие десериализации при завершении десериализации.

Remove(T) - Удаляет первое вхождение указанного значения из LinkedList<T>.

Remove(LinkedListNode<T>) - Удаляет заданный узел из LinkedList<T>.

RemoveFirst - Удаляет узел в начале LinkedList<T>.

RemoveLast - Удаляет узел в конце LinkedList<T>.

Примечание

LinkedList<T> предоставляет отдельные узлы типа LinkedListNode<T>, поэтому вставка и удаление являются операциями O(1).

Пользователь может удалить узлы и повторно их вставить — как в тот же самый список, так и в другой список. В результате в куче не размещается ни одного дополнительного объекта. Поскольку список также содержит внутренний счетчик, получение свойства Count является операцией O(1).

Каждый узел в объекте LinkedList<T> имеет тип LinkedListNode<T>. Поскольку объект LinkedList<T> является двусвязным, каждый узел указывает вперед на узел Next и назад — на узел Previous.

Списки, содержащие ссылочные типы работают лучше, когда узел и его значение создаются одновременно. Объект LinkedList<T> принимает значение null в качестве допустимого свойства Value для ссылочных типов и разрешает дублирование значений. Если объект LinkedList<T> пуст, свойства First и Last содержат значение null.

25. Колекція Dictionary<K, V>. Методи та властивості.

Универсальный класс Dictionary<TKey, TValue> обеспечивает отображение множества ключей в множество значений. Каждый элемент, добавляемый словарь, состоит из значения и связанного с ним ключа. Извлечение значения по его ключу происходит очень быстро поскольку класс Dictionary<TKey, TValue> реализован как хэш-таблица.

Свойства

Comparer - возвращает компаратор IEqualityComparer<T>, используемый для установления равенства ключей словаря.

Count - возвращает число пар "ключ-значение", содержащихся в словаре Dictionary<K,V>.

Item - возвращает или задает значение, связанное с указанным ключом.

Keys - получает коллекцию, содержащую ключи из словаря Dictionary<K, V>.

Values - получает коллекцию, содержащую значения в объекте Dictionary<K, V>.

Методы

Add - добавляет указанные ключ и значение в словарь.

Clear - удаляет все ключи и значения из словаря Dictionary<K, V>.

ContainsKey - определяет, содержится ли указанный ключ в словаре Dictionary<K,V>.

ContainsValue - определяет, содержится ли указанное значение в списке Dictionary<K,V>.

Finalize - позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора.

GetEnumerator - возвращает перечислитель, осуществляющий перебор элементов словаря Dictionary<K, V>.

GetType - возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)

MemberwiseClone - создает неполную копию текущего объекта Object.

Remove - удаляет значение с указанным ключом из словаря Dictionary<K, V>.

ToString Возвращение строки, представляющей текущий объект.

TryGetValue Получает значение, связанное с указанным ключом.

Dictionary<string, string> openWith = new Dictionary<string, string>(); openWith.Add("txt", "notepad.exe"); openWith.Add("bmp", "paint.exe"); openWith.Add("dib", "paint.exe"); openWith.Add("rtf", "wordpad.exe");

openWith["doc"] = "winword.exe";

foreach( KeyValuePair<string, string> kvp in openWith ){ Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);}