Операции с множествами в C#. Часть 1. Классы HashSet и SortedSet

Множество – это совокупность объектов, рассматриваемая как одно целое.

Для работы с множествами в библиотеке классов .NET Framework имеется целых два обобщённых класса HashSet<T> и SortedSet<T>, которые находятся в пространстве имён System.Collections.Generic. Различие между ними в том, что SortedSet<T> представляет упорядоченное множество.

Создание множества

Ниже приведён пример создания и заполнения двух множеств, состоящих из целых чисел.

HashSet<int> a = new HashSet<int>();
a.Add(1);
a.Add(15);
a.Add(45);
a.Add(7);
a.Add(8);
a.Add(22);
a.Add(73);
a.Add(10);
HashSet<int> b = new HashSet<int>();
b.Add(7);
b.Add(8);
b.Add(42);
b.Add(22);
b.Add(12);

Заполнение множеств можно осуществлять и непосредственно при создании. Для этого нужно просто передать в конструктор коллекцию IEnumerable<T>.

Операции с множествами

Далее приведены основные операции с множествами

Объединение

Получение нового множества, которое содержит все элементы исходных множеств.

Математическое обозначение:

Выполняется с помощью метода UnionWith.

1 15 45 7 8 22 73 10 42 12

Пересечение

Выбор одинаковых элементов в обоих множествах.

Математическое обозначение:

Выполняется с помощью метода IntersectWith.

a.IntersectWith(b);

Для приведённых выше множеств результат будет:

7 8 22

Разность

Выбор из одного множества только тех элементов, что отсутствуют в другом.

Математическое обозначение:

Выполняется с помощью метода ExceptWith.

a.ExceptWith(b);

Для приведённых выше множеств результат будет:

1 15 45 73 10

Симметрическая разность

Выбор из обоих множеств элементов, которые не принадлежат одновременно обоим множествам.

Выполняется с помощью метода SymmetricExceptWith.

a.SymmetricExceptWith(b);

Для приведённых выше множеств результат будет:

1 15 45 12 42 73 10

[stextbox id=»warning»]

При работе с множествами в .NET Framework необходимо учитывать следующую особенность.

Результат выполнения операции с множествами сохранятся в той переменной для которой был вызван соответствующий метод. Тем самым перезаписывая исходные данные.

То есть, во всех приведённых примерах в переменной a, будет храниться именно результат, той или иной операции, а вовсе не исходное множество.

[/stextbox]

Несмотря на свою кажущуюся абстрактность множества активно применяются в повседневных задачах. Например, операция разности множеств может быть использована для формирования заявки на поставку отсутствующих товаров со склада в магазин.

Поэтому, очень желательно уметь с ними работать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *