Swift. Множества. Создание и удаление

From AsIsWiki
Revision as of 13:35, 19 March 2022 by Alex (Talk | contribs)

Jump to: navigation, search

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


Contents

Литерал множества

Set (множество) - неупорядоченная коллекция уникальных элементов.

Литерал множества идентичен литералу массива, но не содержит дубликатов.

Значения литерала должны быть одного типа и соответствовать протоколу Hashable.

Для разработчика, множество является неупорядоченным.
Однако, для каждого элемента множества вычисляется хэш (индекс),
который используется для внутренней сортировки (индексации) элементов.

Все фундаментальные типы поддерживают протокол Hashable,
и могут быть использованы для создания множества.

Создание множества

Для создания множества используется ключевое слово Set:

// тип данных задан явно:

var a: Set<Int> = [1, 5, 0]             // {5, 0, 1}

var b = Set<Int>(arrayLiteral: 1, 5, 0) // {0, 5, 1}

// тип данных задан неявно:

var c: Set = [1, 5, 0]                  // {0, 1, 5}

var d = Set(arrayLiteral: 1, 5, 0)      // {1, 0, 5}

// порядок элементов во множествах не влияет на их эквивалентность:

a == b  // true
b == c  // true
c == d  // true

Если не указать Set, то будет создан массив:

var b = [1, 5, 0]  // [1, 5, 0]

type(of: b)        // Array<Int>.Type

Создание множества из диапазона значений

var m = Set(1...10)  // {7, 8, 5, 3, 1, 10, 6, 9, 4, 2}

Создание множества из дубликатов

var m: Set = [1, 1, 1]  // {1}

Создание пустого множества

Пустое множество создается с помощью литерала пустого множества []:

var a: Set<Int> = []

var b = Set<String>()  // или так

a  // Set([])
b  // Set([])

Удаление всех элементов множества

var a: Set<String> = ["qwe", "wer", "etr"]

a       // {"etr", "qwe", "wer"}

a = []  // Set([]) - для удаления используется литерал пустого множества

Примеры строковых множеств

var a: Set<String> = ["qwe", "wer", "ert"]             // {"wer", "qwe", "ert"}

var b: Set = ["qwe", "wer", "ert"]                     // {"qwe", "wer", "ert"}

var c = Set<String>(arrayLiteral: "qwe", "wer", "ert") // {"wer", "ert", "qwe"}

var d = Set(arrayLiteral: "qwe", "wer", "ert")         // {"ert", "qwe", "wer"}



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

Personal tools
Namespaces

Variants
Actions
Navigation
Tools