В классеHashSetподдерживается коллекция, реализующая множество. Для хранения элементов этого множества в нем используется хеш-таблица. В классеHashSetреализуются интерфейсыICollection, ISet, IEnumerable, IEnumerable, ISerializable,а такжеIDeserializationCallback.В коллекции типаHashSetреализуется множество, все элементы которого являются уникальными. Иными словами, дубликаты в таком множестве не допускаются. Порядок следования элементов во множестве не указывается. В классеHashSetопределяется полный набор операций с множеством, определенных в интерфейсеI$et,включая пересечение, объединение и разноименность. Благодаря этому классHashSetоказывается идеальным средством для работы с множествами объектов, когда порядок расположения элементов во множестве особого значения не имеет. Коллекция типа
HashSetимеет динамический характер и расширяется по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться.
Ниже перечислены наиболее употребительные конструкторы, определенные в классеHashSet.
public -HashSetO
public HashSet(IEnumerablecollection)public HashSet(IEqualityComparecomparer)
public HashSet(IEnumerablecollection,IEqualityComparecomparer)
В первой форме конструктора создается пустое множество, а во второй форме — множество, состоящее из элементов указываемой коллекцииcollection.В третьей форме конструктора допускается указывать способ сравнения с помощью параметраcomparer.А в четвертой форме создается множество, состоящее из элементов указываемой коллекцииcollection, и используется заданный способ сравненияcomparer.Имеется также пятая форма конструктора данного класса, в которой допускается инициализировать множество последовательно упорядоченными данными.
В классеHashSetреализуется интерфейсISet,а следовательно, в нем предоставляется полный набор операций со множествами. В этом классе предоставляется также методRemoveWhere (), удаляющий из множества элементы, не удовлетворяющие заданному условию, или предикату.
Помимо свойств, определенных в интерфейсах, которые реализуются в классеHashSet,в него введено дополнительное свойствоComparer,приведенное ниже.
public IEqualityComparer Comparer { get; }
Оно позволяет получать метод сравнения для вызывающего хеш-множества.
Ниже приведен конкретный пример применения классаHashSet.
// Продемонстрировать применение класса HashSet. using System;
using System.Collections.Generic;
class HashSetDemo {
static void Show(string msg, HashSet set) {
Console.Write(msg); foreach(char ch in set)
Console.Write(ch + " ");