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

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

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

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

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

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

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

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

Объединение

Объединение множеств

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

Математическое обозначение: A\cup B

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

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

1 15 45 7 8 22 73 10 42 12

Пересечение

Пересечение множеств

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

Математическое обозначение: A\cap B

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

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

7 8 22

Разность

Разность множеств

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

Математическое обозначение: A\setminus B

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

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

1 15 45 73 10

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

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

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

Математическое обозначение: A\bigtriangleup B

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

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

1 15 45 12 42 73 10

[stextbox id=»warning»]

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

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

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

[/stextbox]

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

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

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

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