Множество – это совокупность объектов, рассматриваемая как одно целое.
Для работы с множествами в библиотеке классов .NET Framework имеется целых два обобщённых класса HashSet и SortedSet, которые находятся в пространстве имён System.Collections.Generic. Различие между ними в том, что SortedSet представляет упорядоченное множество.
Создание множества
Ниже приведён пример создания и заполнения двух множеств, состоящих из целых чисел.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
HashSet a = new HashSet(); 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 b = new HashSet(); b.Add(7); b.Add(8); b.Add(42); b.Add(22); b.Add(12); |
Заполнение множеств можно осуществлять и непосредственно при создании. Для этого нужно просто передать в конструктор коллекцию IEnumerable.
Операции с множествами
Далее приведены основные операции с множествами
Объединение
Получение нового множества, которое содержит все элементы исходных множеств.
Математическое обозначение:
Выполняется с помощью метода UnionWith.
1 |
a.UnionWith(b); |
Для приведённых выше множеств результат будет:
1 15 45 7 8 22 73 10 42 12
Пересечение
Выбор одинаковых элементов в обоих множествах.
Математическое обозначение:
Выполняется с помощью метода IntersectWith.
1 |
a.IntersectWith(b); |
Для приведённых выше множеств результат будет:
7 8 22
Разность
Выбор из одного множества только тех элементов, что отсутствуют в другом.
Математическое обозначение:
Выполняется с помощью метода ExceptWith.
1 |
a.ExceptWith(b); |
Для приведённых выше множеств результат будет:
1 15 45 73 10
Симметрическая разность
Выбор из обоих множеств элементов, которые не принадлежат одновременно обоим множествам.
Математическое обозначение:
Выполняется с помощью метода SymmetricExceptWith.
1 |
a.SymmetricExceptWith(b); |
Для приведённых выше множеств результат будет:
1 15 45 12 42 73 10
[stextbox id=»warning»]
При работе с множествами в .NET Framework необходимо учитывать следующую особенность.
Результат выполнения операции с множествами сохранятся в той переменной для которой был вызван соответствующий метод. Тем самым перезаписывая исходные данные.
То есть, во всех приведённых примерах в переменной a, будет храниться именно результат, той или иной операции, а вовсе не исходное множество.
[/stextbox]
Несмотря на свою кажущуюся абстрактность множества активно применяются в повседневных задачах. Например, операция разности множеств может быть использована для формирования заявки на поставку отсутствующих товаров со склада в магазин.
Поэтому, очень желательно уметь с ними работать.
Добавить комментарий