Читать «C# 4.0: полное руководство» онлайн - страница 629
Герберт Шилдт
В классе 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>
имеет динамический характер и расширяется по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться.