Swift. Множества. Базовые свойства и методы
From AsIsWiki
Назад · Оглавление · Дальше
Contents |
Вставка элемента
var a: Set<Int> = [] // Set([]) - пустое множество var b = a.insert(12) // (inserted true, memberAfterInsert 12) a // {12} b // {12} b.inserted // true b.memberAfterInsert // 12
Метод insert возвращает кортеж, первый элемент которого подтверждает вставку:
true - элемент добавлен
false - множество уже содержит данный элемент
Удаление элемента
var a: Set<String> = ["11", "22", "33"] a.remove("22") // "22" (метод вернул удалённый элемент) a // {"11", "33"} a.remove("00") // nil (попытка удаления несуществующего элемента) a.removeAll() // Set([]) a // Set([])
Проверка наличия элемента
var a: Set<String> = ["11", "22", "33"] a.contains("11") // true a.contains("55") // false
Количество элементов
var a: Set<String> = ["11", "22", "33"] a.count // 3
Операции с множествами
let even: Set = [0, 2, 4, 6, 8] // четные let odd: Set = [1, 3, 5, 7, 9] // нечетные var diff: Set = [3, 4, 7, 8] // смешанные diff.intersection(odd) // {3, 7} - пересечение множеств (общие элементы) diff.symmetricDifference(odd) // {1, 5, 8, 9, 4} - непересекающиеся элементы множеств even.union(odd) // {6, 8, 4, 7, 1, 9, 0, 2, 5, 3} - объединение множеств diff.subtracting(even) // {3, 7} - разница множеств: элементы diff, которых нет в even
Цепочка вызовов
var m = even.union(odd).sorted() // возвращает отсортированный массив объединенных элементов
Длина цепочки может быть произвольной.
Отношение множеств
var a: Set = [1, 2, 3, 4, 5] var b: Set = [1, 3] var c: Set = [2, 4, 6, 8] var d: Set = [1, 3]
a - супермножество для множества b
b - субмножество (подмножество) для a
b и c - непересекающиеся множества
a и c - пересекающиеся множества
b и d - множества эквивалентны (содержат одинаковый набор элементов)
Проверка отношения
b == d // true - множества эквивалентны b.isDisjoint(with: c) // true - множества не имеют общих элементов (не пересекаются) b.isSubset(of: a) // true - "b" является подмножеством "a" a.isSuperset(of: b) // true - "a" является супермножеством для "b" b.isStrictSubset(of: a) // true - "b" является подмножеством "a", не равным ему a.isStrictSuperset(of: b) // true - "a" является супермножеством для "b", не равным ему b.isStrictSubset(of: d) // false - "b" не является подмножеством "d", не равным ему d.isStrictSuperset(of: b) // false - "d" не является супермножеством для "b", не равным ему
Сортировка
var a: Set = [1, 10, 2, 5, 12, 23] var b = a.sorted() b // [1, 2, 5, 10, 12, 23] type(of: b) // Array<Int>.Type // результат сортировки множества - массив
Примеры операций
var a = Set(1...10) var b = Set(5...15) a.intersection(b).sorted() // [5, 6, 7, 8, 9, 10] a.union(b).sorted() // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] a.symmetricDifference(b).sorted() // [1, 2, 3, 4, 11, 12, 13, 14, 15] a.subtracting(b).sorted() // [1, 2, 3, 4] b.subtracting(a).sorted() // [11, 12, 13, 14, 15]
Примеры проверки отношения
var a = Set(1...10) var b = Set(5...8) var c = Set(11...20) var d = Set(11...20) a == b // false c == d // true b.isSubset(of: a) // true a.isSuperset(of: b) // true b.isStrictSubset(of: a) // true a.isStrictSuperset(of: b) // true a.isDisjoint(with: b) // false a.isDisjoint(with: c) // true c.isSuperset(of: d) // true d.isSubset(of: c) // true c.isStrictSuperset(of: d) // false d.isStrictSuperset(of: c) // false
Назад · Оглавление · Дальше