Множество
Множество — это коллекция, которая содержит только уникальные элементы. Порядок обхода элементов соответствует порядку добавления элементов в множество. Множество позволяет хранить элементы произвольных типов.
Множества могут быть неизменяемыми и изменяемыми. Как следует из самого термина, в неизменяемом множестве нельзя менять, добавлять или удалять значения множества. Наряду с термином «неизменяемый» может применяться термин «фиксированный». В то же время изменяемое множество — это множество, для которого поддерживается изменение списка элементов множества. Изменяемое множество будет называться множеством или обычным множеством. Соответственно, тип для неизменяемого множества называется ЧитаемоеМножество<ТипЭлемента>
, а тип для обычного множества — Множество<ТипЭлемента>
.
Множество может быть описано пустым и с указанием данных инициализации. Данные инициализации должны располагаться в фигурных скобках {}
. В данных инициализации допускается указывать повторяющиеся значения. Они будут отброшены без формирования ошибок.
пер ПустоеМножество: Множество<Число>
пер МножествоСДанными = {1, 2, 3}
При проверке вхождения метод СодержитВсе()
проверяет полное вхождение, т. е. результат будет равен Истина
в том случае, если в исходном множестве содержатся все элементы из коллекции, которая является параметром метода СодержитВсе()
.
Важной особенностью множеств является возможность выполнять над ними специальные операции:
-
Проверка на равенство. Два множества являются равными, если равны их размеры и каждый элемент первого множества содержится во втором множестве. Допускается сравнивать значения типа
Множество<ТипЭлемента>
иЧитаемоеМножество<ТипЭлемента>
. -
Объединение множеств (метод
Объединение()
). В этом случае формируется множество, которое содержит все уникальные значения двух исходных множеств;пер Множество1 = {1, 2, 3, 4}
пер Множество2 = {3, 4, 5, 6}
пер ОбъединениеМножеств = Множество1.Объединение(Множество2)
// ОбъединениеМножеств = {1, 2, 3, 4, 5, 6} -
Пересечение множеств (метод
Пересечение()
). В этом случае формируется множество, содержащее только те элементы, которые присутствуют одновременно в обоих множествах;пер Множество1 = {1, 2, 3, 4}
пер Множество2 = {3, 4, 5, 6}
пер ПересечениеМножеств = Множество1.Пересечение(Множество2)
// ПересечениеМножеств = {3, 4} -
Разность множеств (методы
Разность()
иСимметрическаяРазность()
). Простая разность формирует результирующее множество, содержащее только те элементы исходного множества, которые отсутствуют в множестве — параметре метода.пер Множество1 = {1, 2, 3, 4}
пер Множество2 = {3, 4, 5, 6}
пер РазностьМножеств = Множество1.Разность(Множество2)
// РазностьМножеств = {1, 2}Симметрическая разность формирует результирующее множество, которое содержит элементы, уникальные в каждом множестве. Другими словами, результат работы метода
СимметрическаяРазность()
не будет включать в себя значения, которые есть одновременно в обоих множествах.пер Множество1 = {1, 2, 3, 4}
пер Множество2 = {3, 4, 5, 6}
пер СимметрическаяРазностьМножеств = Множество1.СимметрическаяРазность(Множество2)
// СимметрическаяРазностьМножеств = {1, 2, 5, 6}
Доступ к элементам множества поддерживается только с помощью цикла для из
. Доступ к элементам множества с помощью функционального способа или с помощью операции доступа по индексу []
не поддерживается.
В цикле обхода коллекции «Шина» не поддерживает изменение состава коллекции. При попытке такого изменения «Шина» выбросит исключение.
Пример ниже демонстрирует, что одно множество может содержать значения разного типа.
метод МойМетод()
ЭлементыМножества({1, "2", 3, Истина, [1, 2, 3]})
;
метод ЭлементыМножества(ЧтоПеречисляем: ЧитаемоеМножество<Булево|Число|Строка|Массив<Число>>)
пер ТипПараметра = ЧтоПеречисляем.ПолучитьТип()
пер РазмерПараметра = ЧтоПеречисляем.Размер()
для ЭлементКоллекции из ЧтоПеречисляем
пер ЗначениеЭлемента = ЭлементКоллекции
пер ТипЗначения = ЭлементКоллекции.ПолучитьТип()
;
;