Очередь содержит: 98.6 212 32 3.1416



Итоговая сумма равна 345.7416

 

 

Класс HashSet<T>

 

В классе HashSet<T> поддерживается коллекция, реализующая множество. Для хранения элементов этого множества в нем используется хеш-таблица. В классе HashSet<T> реализуются интерфейсы ICollection<T>, ISet<T>, IEnumerable, IEnumerable<T>, ISerializable, а также IDeserializationCallback. В коллекции типа HashSet<T> реализуется множество, все элементы которого являются уникальными. Иными словами, дубликаты в таком множестве не допускаются. Порядок следования элементов во множестве не указывается. В классе HashSet<T> определяется полный набор операций с множеством, определенных в интерфейсе I$et<T>, включая пересечение, объединение и разноименность. Благодаря этому класс HashSet<T> оказывается идеальным средством для работы с множествами объектов, когда порядок расположения элементов во множестве особого значения не имеет. Коллекция типа HashSet<T> имеет динамический характер и расширяется по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться.

Ниже перечислены наиболее употребительные конструкторы, определенные в классе HashSet<T>.

 

Public HashSet()

public HashSet(IEnumerable<T> collection)

Public HashSet(IEqualityCompare comparer)

public HashSet(IEnumerable<T> collection, IEqualityCompare comparer)

 

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

В классе HashSet<T> реализуется интерфейс ISet<T>, а следовательно, в нем предоставляется полный набор операций со множествами. В этом классе предоставляется также метод RemoveWhere(), удаляющий из множества элементы, не удовлетворяющие заданному условию, или предикату.

Помимо свойств, определенных в интерфейсах, которые реализуются в классе HashSet<T>, в него введено дополнительное свойство Comparer, приведенное ниже.

 

public IEqualityComparer<T> Comparer { get; }

 

Оно позволяет получать метод сравнения для вызывающего хеш-множества.

Ниже приведен конкретный пример применения класса HashSet<T>.

 

// Продемонстрировать применение класса HashSet<T>.

using System;

using System.Collections.Generic;

 

class HashSetDemo {

static void Show( string msg, HashSet<char> set) {

Console.Write(msg);

Foreach(char ch in set)

Console.Write(ch + " ");

 

Console.WriteLine();

}

 

static void Main() {

HashSet<char> setA = new HashSet<char>();

HashSet<char> setB = new HashSet<char>();

 

setA.Add('A');

setA.Add('В');

setA.Add('C');

setB.Add('C');

setB.Add('D');

setB.Add('Е');

 

Show("Исходное содержимое множества setA: ", setA);

Show("Исходное содержимое множества setB: ", setB);

 

setA.SymmetricExceptWith(setB);

Show("Содержимое множества setA после " +

"разноименности со множеством SetB: ", setA);

 

setA.UnionWith(setB);

Show("Содержимое множества setA после " +

"объединения со множеством SetB: ", setA);

 

setA.ExceptWith(setB);

Show("Содержимое множества setA после " +

"вычитания из множества setB: ", setA);

 

Console.WriteLine();

}

}

 

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

 

Исходное содержимое множества setA: A B C

Исходное содержимое множества setB: С D Е

Содержимое множества setA после разноименности со множеством SetB: А В D Е

Содержимое множества setA после объединения со множеством SetB: А В D Е С

Содержимое множества setA после вычитания из множества setB: А В

 

 

Класс SortedSet<T>

 

Класс SortedSet<T> представляет собой новую разновидность коллекции, введенную в версию 4.0 среды .NET Framework. В нем поддерживается коллекция, реализующая отсортированное множество. В классе SortedSet<T> реализуются интерфейсы ISet<T>, ICollection, ICollection<T>, IEnumerable, IEnumerable<T>, ISerializable, а также IDeserializationCallback. В коллекции типа SortedSet<T> реализуется множество, все элементы которого являются уникальными. Иными словами, дубликаты в таком множестве не допускаются. В классе SortedSet<T> определяется полный набор операций с множеством, определенных в интерфейсе ISet<T>, включая пересечение, объединение и разноименность. Благодаря тому что все элементы коллекции типа SortedSet<T> сохраняются в отсортированном порядке, класс SortedSet<T> оказывается идеальным средством для работы с отсортированными множествами объектов. Коллекция типа SortedSet<T> имеет динамический характер и расширяется по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться.

Ниже перечислены четыре наиболее часто используемые конструктора, определенных в классе SortedSet<T>.

 

Public SortedSetO

public SortedSet(IEnumerable<T> collection)


Дата добавления: 2019-02-12; просмотров: 281; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!