Множества
Множества (Set) представляют собой неупорядоченные коллекции уникальных элементов. В отличие от массивов в множествах элементы должны быть уникальными, мы не можем определить несколько элементов с одним и тем же значением.
Определение
Для определения множества у переменной или константы устанавливается тип Set<Element>, где Element - это тип данных:
1
var numbers: Set<Int> = [5, 6, 7, 8]
При определении можно опускать тип:
1
var numbers: Set = [5, 6, 7, 8]
Либо можно использовать функцию инициализатора Set<Element>:
1
var numbers = Set<Int>(arrayLiteral: 5, 6, 7, 8)
Создание пустого множества:
1
2
3
var numbers = Set<Int>()
// или
// var numbers: Set<Int> = []
Работа с множествами
Метод insert() позволяет добавить новый элемент в множество:
1
2
3
var numbers: Set<Int> = [5, 6, 7, 8]
numbers.insert(10);
print(numbers) // [5, 6, 7, 8, 10]
Также множества поддерживают ряд операций по удалению:
removeAtIndex(): удаляет элемент по определенному индексу
removeFirst(): удаляет первый элемент
remove(): удаляет какой-то определенный элемент по значению
removeAll(): удаляет все элементы
1
2
3
var numbers: Set<Int> = [5, 6, 7, 8]
numbers.remove(7);
print(numbers) // [5, 6, 8]
Еще один метод contains() позволяет проверить наличие в множестве элемента:
1
2
3
var numbers: Set<Int> = [5, 6, 7, 8]
var isPresent = numbers.contains(7); // true - элемент есть
isPresent = numbers.contains(34); // false - элемент отсутствует
Хотя множество представляет неупорядоченный набор, но с помощью метода sorted() мы можем отсортировать его:
1
2
var numbers: Set<Int> = [4, 7, 2, 6]
print(numbers.sorted()) // [2, 4, 6, 7]
Операции над множествами
Особую ценность среди операций представляют операции, предназначенные специально для множеств: объединение, пересечение, разность множеств.
Операции над множествами в Swift
intersection(): пересечение множеств, возвращает общие для обоих множеств элементы
symmetricDifference(): возвращает не общие (не пересекающиеся) для обоих множеств элементы (симметрическая разность)
union(): объединение двух множеств
subtract(): разница множеств, возвращает элементы первого множества, которые отсутствуют во втором
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var a: Set = [1, 2, 3, 4, 5]
var b: Set = [4, 5, 6, 7, 8]
// объединение
a.union(b) // [1, 2, 3, 4, 5, 6, 7, 8]
// пересечение
a.intersection(b) // [4, 5]
// разность
a.subtract(b) // [1, 2, 3]
// симметрическая разность
a.symmetricDifference(b) // [1, 2, 3, 6, 7, 8]