C# 4.0 полное руководство - 2011
Шрифт:
зывающее множество и другое множество other содержат хотя бы один общий элемент, а иначе — логическое значение false
bool SetEquals(IEnumerable<T>
Возвращает логическое значение true, если все
other)
элементы вызывающего множества и другого множества other оказываются общими, а иначе —логическое значение false.
void SymmetricExceptWith
После вызова этого метода вызывающее множе
(IEnumerable<T> other)
ство будет содержать симметрическую разность своих элементов и элементов другого множества
other
void UnionWith(IEnumerable<T>
После вызова этого метода вызывающее множе
other)
ство будет содержать объединение своих элементов и элементов другого множества other
Структура KeyValuePair<TKey, TValue>
В пространстве имен System.Collections. Generic определена структура KeyValuePair<TKey, TValue>. Она служит для хранения ключа и его значения и применяется в классах обобщенных коллекций, в которых хранятся пары "ключ-значение", как, например, в классе Dictionary<TKey, TValueX В этой структуре определяются два следующих свойства.
public TKey Key { get; }; public TValue Value { get; };
В этих свойствах хранятся ключ и значение соответствующего элемента коллекции. Для построения объекта типа KeyValuePair<TKey, TValue> служит конструктор:
public KeyValuePair(TKey key, TValue value) где key обозначает ключ, a value — значение.
Классы обобщенных коллекций
Как упоминалось ранее, классы обобщенных коллекций по большей части соответствуют своим необобщенным аналогам, хотя в некоторых случаях они носят другие имена. Отличаются они также своей организацией и функциональными возможностями. Классы обобщенных коллекций определяются в пространстве имен System. Collections . Generic. В табл. 25.14 приведены классы, рассматриваемые в этой главе. Эти классы составляют основу обобщенных коллекций.
Таблица 25.14. Основные классы обобщенных коллекций
Класс
Описание
Dictionary<Tkey,
TValue>
Сохраняет пары “ключ-значение". Обеспечивает такие же функциональные возможности, как и необобщенный класс Hashtable
HashSet<T>
Сохраняет ряд уникальных значений, используя хеш-таблицу
LinkedList<T>
Сохраняет
элементы в двунаправленном спискеList<T>
Создает динамический массив. Обеспечивает такие же функциональные возможности, как и необобщенный класс ArrayList
Queue<T>
Создает очередь. Обеспечивает такие же функциональные возможности, как и необобщенный класс Queue
SortedDictionary<TKey,
Создает отсортированный список из пар “ключ-
TValue>
значение"
SortedList<TKey,
TValue>
Создает отсортированный список из пар “ключ-значение”. Обеспечивает такие же функциональные возможности, как и необобщенный класс SortedList
SortedSet<T>
Создает отсортированное множество
Stack<T>
Создает стек. Обеспечивает такие же функциональные возможности, как и необобщенный класс Stack
ПРИМЕЧАНИЕ
В пространстве имен System. Collections. Generic находятся также следующие классы: класс SynchronizedCollection<T> синхронизированной коллекции на основе класса IList<T>; класс SynchronizedReadOnlyCollection<T>, доступной только для чтения синхронизированной коллекции на основе класса lList<T>; абстрактный класс SynchronizedKeyCollectioncK, т>, служащий в качестве базового для класса коллекции System. ServiceModel. UriSchemeKeyedCollection; а также класс KeyedByTypeCollection<T> коллекции, в которой в качестве ключей используются отдельные типы данных.
Класс List<T>
В классе List<T> реализуется обобщенный динамический массив. Он ничем принципиально не отличается от класса необобщенной коллекции ArrayList. В этом классе реализуются интерфейсы ICollection, ICollection<T>, IList, IList<T>, IEnumerable и IEnumerable<T>. У класса List<T> имеются следующие конструкторы.
public List
public List(IEnumerable<T> collection) public List(int capacity)
Первый конструктор создает пустую коллекцию класса List с выбираемой по умолчанию первоначальной емкостью. Второй конструктор создает коллекцию типа List с количеством инициализируемых элементов, которое определяется параметром collection и равно первоначальной емкости массива. Третий конструктор создает коллекцию типа List, имеющую первоначальную емкость, задаваемую параметром capacity. В данном случае емкость обозначает размер базового массива, используемого для хранения элементов коллекции. Емкость коллекции, создаваемой в виде динамического массива, может увеличиваться автоматически по мере добавления в нее элементов.