Интерфейс Set представляет неупорядоченный набор объектов, который хранит только уникальные объекты.
Интерфейс Set представляет неизменяемый (immutable) набор. Set расширяет интерфейс Collection и соответственно все его методы.
Для создания неизменяемого (immutable) набора используется функция setOf().
Set реализует метод toString таким образом, что возвращает в удобочитабельном виде все элементы в виде строки
Причем, поскольку Set представляет набор уникальных объектов, то даже если мы передадим через функцию setOf() повторяющиеся значения, то в наборе все равно будут только уникальные значения:
Методы Set
Рассмотрим некоторые специфичные операции Set. Прежде всего это методы для операций с множествами:
- union: объединение множеств
- intersect: пересечение множеств (возвращает элементы, которые есть в обоих множествах)
- subtract: вычиьтание множеств (возвращает элементы, которые есть в первом множестве, но отсутствуют во втором)
Хотя эти операции могут применяться и к спискам List, но возвращают они всегда объект Set и более уместны для множеств Set.
Изменяемые коллекции
Изменяемые (mutable) наборы представлены интерфейсом MutableSet, который расширяет интерфейсы Set и MutableCollection, соответственно поддерживает методы по изменению коллекции.
Для создания изменяемых (mutable) наборов применяется функция mutableSetOf().
Интерфейс MutableSet реализуется следующими типами изменяемых наборов:
- LinkedHashSet: объединяет возможности хеш-таблицы и связанного списка. Создается с помощью функции linkedSetOf()
- HashSet: представляет хеш-таблицу. Создается с помощью функции hashSetOf()
Изменение набора с помощью MutableSet: