Apple: A collection is a stable sequence with addressable "positions," represented by an associated Index type.
protocol CollectionType : SequenceType {
typealias Index : ForwardIndexType // a position
subscript(i: Index) -> Iterator.Element {get}
var startIndex: Index {get}
var endIndex: Index {get}
}
Всего в swift есть коллекции:
-
Array (массив) - сохраняют свой порядок и могут содержать дубликаты. Массивы в свифте реализованы как структура;
Open
-
Вы можете свободно добавлять к ним данные (если не let), чтобы со временем наращивать свои данные, или вы можете удалить или даже изменить порядок элементов, если хотите.
-
Мы считываем значения из массивов, используя их числовую позицию, отсчитывая от 0. Этот «отсчет от 0» имеет технический термин: zero-based
array[0]
Для сравнения, массивы должны хранить свои элементы в том порядке, в котором вы им указываете, поэтому, чтобы проверить, существует ли элемент X в массиве, содержащем 10 000 элементов, Swift необходимо начать с первого элемента и проверять каждый элемент, пока он не будет найден
var website = ["Apple", "www.apple.com"]
Получить значения:
website[0]
иwebsite[1]
-
-
Set (множество) - неупорядочены и не могут содержать дубликатов. Все объекты внутри
Set
должны конфортить протокол Hashable. Set в Swift реализованы как структуры;Open
Наборы представляют собой наборы значений, как и массивы, за исключением двух отличий:
-
Предметы хранятся не в каком-либо порядке; они хранятся в случайном порядке, поэтому мы не можем считывать значения из набора с использованием числовых позиций, как с массивами.
-
Ни один предмет не может появляться в наборе дважды; все предметы должны быть уникальными.
let colors = Set(["red", "green", "blue"])
Поскольку set не должен хранить ваши объекты в том порядке, в котором вы их добавляете, они вместо этого могут хранить их в случайном порядке, который оптимизирует их для быстрого поиска. Итак, когда вы говорите «содержит ли этот набор элемент X», вы получите ответ за доли секунды, независимо от того, насколько велик набор.
-
-
Dictionaries (словари) (Hash Map) - неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Dictionary в Swift реализованы как структуры;
Open
Словари - это коллекции значений, как и массивы, но вместо того, чтобы хранить вещи с целочисленной позицией, вы можете получить к ним доступ, используя все, что захотите.
let heights = ["Taylor Swift": 1.78, "Ed Sheeran": 1.73]
илиидентификатора(ключ) : значение, которое мы хотим сохранить
Получить значения:
let result: Int = heights["Taylor Swift", default: 0]
; default - значит, что есть значения "Taylor Swift" нет в словаре, то верни 0.В отличие от кортежей, нельзя гарантировать, что ключ в словаре существует. Вот почему чтение значения из словаря может ничего не вернуть - возможно, вы запросили ключ, которого не существует!
- String снова являются являются коллекциями. Это означает, что вы можете переворачивать их, циклически перебирать их посимвольно, использовать map() и flatMap() и многое другое.
Новые невстроенные коллекции swift:
-
OrderedSet - тот же уникальный Set, только значения в нем упорядочены;
-
OrderedDictionary - упорядоченный набор пар ключ-значение;
-
Deque - реализует упорядоченную коллекцию с произвольным доступом, которая поддерживает эффективные вставки и удаления с обоих концов. По сути тот же массив;
To use OrderedSet, first add the swift-collections Swift package to your project. Then, import the OrderedCollections module:
import OrderedCollections
5.3.1.4.4 Collections And Tuple Theme Folder | Back To iOSWiki Contents | 5.3.1.4.4.2 Associated Array Theme