Swift. Множества. Базовые свойства и методы

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
 
<div style='max-width:700px;text-align:justify;'>
 
<div style='max-width:700px;text-align:justify;'>
 
[[Swift. Множества. Создание и удаление|Назад]] ·
 
[[Swift. Множества. Создание и удаление|Назад]] ·
[[Swift. Множества|Оглавление]] ·
+
[[Swift|Оглавление]] ·
 
[[Swift. Множества. ?|Дальше]]
 
[[Swift. Множества. ?|Дальше]]
  
Line 163: Line 163:
 
----
 
----
 
[[Swift. Множества. Создание и удаление|Назад]] ·
 
[[Swift. Множества. Создание и удаление|Назад]] ·
[[Swift. Множества|Оглавление]] ·
+
[[Swift|Оглавление]] ·
 
[[Swift. Множества. ?|Дальше]]
 
[[Swift. Множества. ?|Дальше]]
 
</div>
 
</div>

Revision as of 13:37, 19 March 2022

Назад · Оглавление · Дальше


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



Назад · Оглавление · Дальше

Personal tools
Namespaces

Variants
Actions
Navigation
Tools