scalabook

Форк
0
129 строк · 4.4 Кб

Maps

Map

— это итерируемая коллекция, состоящая из пар ключей и значений. В Scala есть как изменяемые, так и неизменяемые типы Map
. В этом разделе показано, как использовать неизменяемый Map
.

Создание Map

Неизменяемая Map

создается следующим образом:

val states = Map(
"AK" -> "Alaska",
"AL" -> "Alabama",
"AZ" -> "Arizona"
)

Перемещаться по элементам Map

в цикле for
можно следующим образом:

for (k, v) <- states do println(s"key: $k, value: $v")
// key: AK, value: Alaska
// key: AL, value: Alabama
// key: AZ, value: Arizona

Доступ к элементам Map

Доступ к элементам Map

осуществляется через указание в скобках значения ключа:

val ak = states("AK")
// ak: String = "Alaska"
val al = states("AL")
// al: String = "Alabama"

На практике также используются такие методы, как keys

, keySet
, keysIterator
, циклы for
и функции высшего порядка, такие как map
, для работы с ключами и значениями Map
.

Добавление элемента в Map

При добавлении элементов в неизменяемую карту с помощью +

и ++
, создается новая карта:

val a = Map(1 -> "one")
// a: Map[Int, String] = Map(1 -> "one")
val b = a + (2 -> "two")
// b: Map[Int, String] = Map(1 -> "one", 2 -> "two")
val c = b ++ Seq(
3 -> "three",
4 -> "four"
)
// c: Map[Int, String] = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four")

Удаление элементов из Map

Элементы удаляются с помощью методов -

или --
. В случае неизменяемой Map
создается новый экземпляр, который нужно присвоить новой переменной:

val a = Map(
1 -> "one",
2 -> "two",
3 -> "three",
4 -> "four"
)
// a: Map[Int, String] = Map(1 -> "one", 2 -> "two", 3 -> "three", 4 -> "four")
val b = a - 4
// b: Map[Int, String] = Map(1 -> "one", 2 -> "two", 3 -> "three")
val c = a - 4 - 3
// c: Map[Int, String] = Map(1 -> "one", 2 -> "two")

Обновление элементов в Map

Чтобы обновить элементы на неизменяемой Map

, используется метод update
(или оператор +
):

val a = Map(
1 -> "one",
2 -> "two",
3 -> "three"
)
// a: Map[Int, String] = Map(1 -> "one", 2 -> "two", 3 -> "three")
val b = a.updated(3, "THREE!")
// b: Map[Int, String] = Map(1 -> "one", 2 -> "two", 3 -> "THREE!")
val c = a + (2 -> "TWO...")
// c: Map[Int, String] = Map(1 -> "one", 2 -> "TWO...", 3 -> "three")

Перебор элементов в Map

Элементы в Map

можно перебрать с помощью цикла for
, как и для остальных коллекций:

val states = Map(
"AK" -> "Alaska",
"AL" -> "Alabama",
"AZ" -> "Arizona"
)
// states: Map[String, String] = Map(
// "AK" -> "Alaska",
// "AL" -> "Alabama",
// "AZ" -> "Arizona"
// )
for (k, v) <- states do println(s"key: $k, value: $v")
// key: AK, value: Alaska
// key: AL, value: Alabama
// key: AZ, value: Arizona

Существует много способов работы с ключами и значениями на Map

. Общие методы Map
включают foreach
, map
, keys
и values
.

В Scala есть много других специализированных типов Map

, включая CollisionProofHashMap
, HashMap
, LinkedHashMap
, ListMap
, SortedMap
, TreeMap
, WeakHashMap
и другие.


Ссылки:

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.