Найти в Дзене

Computer Science. Data 1.

Оглавление

Collections.

Распространенные реализации

В Swift выделяют три основные коллекции:

  • Array (массив) — это коллекция упорядоченных элементов по индексам (Ordered random-access collection)
  • Set (множество) — это неупорядоченная коллекция уникальных элементов (Unordered collection of unique elements)
  • Dictionary (словарь) — это коллекция пар ключ-значение (Collection of pairs key-value)

Каждая из коллекций имеет свои особенности.

Понимание отличий и принципов работы помогает с выбором необходимой коллекции при решении определенной задачи, реализации бизнес-логики или даже для повышении эффективности работы вашего кода.

В каких случаях применяются

Если вам важен порядок и не смущает наличие дубликатов, то очевидным выбором является Array (Массив), большинство реализаций приходится именно на эту коллекцию.

А если порядок не нужен или наличие одинаковых данных начинает доставлять дискомфортные ощущения? Конечно же, мы начинаем рассматривать Set (Множества). Реализация primary key, названия и любые другие значения, которым необходимо существовать в единственном числе, чтобы не вызвать краш приложения или нарушение его работы.

Наконец, Dictionary (Словари), с конкретным ключом и значением для него. Если ваше ТЗ предполагает получение данных с сервера, то без Словаря не обойтись.

Как работают внутри

Array.

Это динамический массив. Его элементы хранятся в блоке памяти, куда и записываются данные по порядку, для доступа к этим данным мы используем индексы ячеек.

Обратились к элементу по индексу 0.
Обратились к элементу по индексу 0.
Вывод: от 12 до 43 включительно
Вывод: от 12 до 43 включительно

Существует огромное количество полезных методов, рассмотрим пару примеров:

// Добавляем
massive.append(111) // [12, 34, 55, 44, 43, 111]
massive.insert(0, at: 3) // [12, 34, 55, 0, 44, 43, 111]
// Удаляем
massive.remove(at: 2) // [12, 34, 0, 44, 43, 111]
massive.removeLast() // [12, 34, 0, 44, 43]

Set.

Это неупорядоченная коллекция уникальных элементов. Внутренняя структура реализована как хэш-таблица. Каждый элемент имеет уникальное хэш-значение, что позволяет быстро выполнять операции добавления и поиска.

-4

Суть какая, в памяти выглядит как массив, только вместо индекса хэш значения.

Например,
если у числа 12 хэш = 222444,
у числа 11(1) хэш = 111555,
*у всех дубликатов числа 11 хэш одинаковый.
Создаются ячейки, адрес которых и есть хэш числа. Число 12 попадает в ячейку со своим хешем, первое число 11 – в свою ячейку, а дубликаты числа 11 игнорируются, так как хеш этого числа уже есть в таблице памяти.

Dictionary.

Это коллекция пар ключ-значение (Collection of pairs key-value).

Как и Set, Dictionary реализован через хэш-таблицу. Пары «ключ-значение» хранятся в соответствующих ячейках на основе хэша ключа.

-5
-6

В этой части мы рассмотрели самые простые коллекции, пробуйте примеры со скринов через Playground или прям во ViewDidLoad вашего проекта.
Во второй части мы рассмотрим более продвинутый уровень.

спасибо https://habr.com/ru/sandbox/173690/