В словарях, в отличие от списков, элементы не упорядочены друг за другом. Для доступа к ним вместо индекса используется ключ.
Таким образом, сам элемент, который в случае словаря называют записью, состоит из двух компонентов – ключа и значения.
В пределах одного словаря записей с одинаковыми ключами быть не может. Однако могут быть записи с одинаковыми значениями.
Также как и в случае со списками в языке программирования Kotlin словари делятся на изменяемые и неизменяемые. Соответствующие им встроенные в Kotlin функции для создания словарей – mapOf() и mutableMapOf()
При определении словаря с помощью функции mapOf() пары ключ-значение передаются через слово to. Первым идет ключ.
Чтобы извлечь значение по ключу, как и в случае массивов и списков можно использовать квадратные скобки. Однако вместо индекса в них записывается ключ.
С помощью свойств keys, values и entries получают коллекции соответственно ключей, значений и записей.
Вывод на экран будет таким:
Обратим внимание на выражение (i, j) in e.
Каждый элемент множества e состоит из двух "подэлементов".
Первый играл в словаре роль ключа, второй – значения. Когда такой "двойной" элемент присваивается сразу двум переменным (в данном случае i и j), то происходит "распаковка", то есть первый подэлемент присваивается первой переменной, второй – второй.
Проверить вхождение определенных ключей и значений в словарь можно с помощью функций containsKey() и containsValue()
С другой стороны, выражение ключ in словарь уже проверяет на вхождение ключа в словарь.
При этом подобное выражение в заголовке for извлекает вовсе не ключ, а запись целиком, с ключом и значением.
В изменяемых словарях можно менять значения ключей, а также добавлять новые записи, как и удалять ненужные.
Обратите внимание, изменение значения и добавление новой пары ключ-значение имеют одинаковый синтаксис – используются квадратные скобки, в которых записывается ключ, далее идет операция присваивания значения.
Если в словаре уже есть запись с указанным ключом, то происходит изменение значения. Если такого ключа нет, произойдет добавление