Map

Последнее обновление: 02.06.2021

Коллекция Map представляет коллекцию объектов, где каждый элемент имеет ключ и сопоставляемое с ним значение. При этом все ключи в коллекции являются уникальными. В отличие от List и Set интерфейс Map не расширяет интерфейс Collection.

Map представляет неизменяемую коллекцию, для создания которой применяется метод mapOf().

val countries: Map<String, Int> = mapOf("USA" to 300, "France" to 60, "Germany" to 81)

println(countries["USA"])   // 300
for(country in countries){
	println("${country.key} - ${country.value}")
}
println(countries)

Функция mapOf принимает набор элементов, каждый из которых с помощью оператора to сопоставляет ключ со значением, например, "USA" to 300.

Консольный вывод:

300
USA - 300
France - 60
Germany - 81
{USA=300, France=60, Germany=81}

Изменяемые коллекции представлены интерфейсом MutableMap, который расширяет интерфейс Map. Для создания объекта MutableMap применяется функция mutableMapOf().

Интерфейс MutableMap реализуется рядом коллекций:

  • HashMap: простейшая реализация интерфейса MutableMap, не гарантирует порядок элементов в коллекции. Создается функцией hashMapOf()

  • LinkedHashMap: представляет комбинацию HashMap и связанного списка, создается функцией linkedMapOf()

Использование изменяемых коллекций:

val countries: MutableMap<String, Int> = mutableMapOf("USA" to 300, "France" to 60, "Germany" to 81)

countries.put("Spain", 33)	// добавляем новый элемент с ключом "Spain" и значением 33
countries.remove("France")	// удаляем элемент с ключом "France"

for(country in countries){
	println("${country.key} - ${country.value}")
}
println(countries)


val map1: LinkedHashMap<Int, String> = linkedMapOf(1 to "1", 2 to "2")
val map2: HashMap<Int, String> = hashMapOf(1 to "1", 2 to "2")

Консольный вывод:

USA - 300
Germany - 81
Spain - 33
{USA=300, Germany=81, Spain=33}
Помощь сайту
WebMoney
  • P378451176208
  • Z280152397659
ЮMoney/Яндекс-Деньги
  • 410011174743222
PayPal
  • metanit22@mail.ru
Перевод на карту
  • Номер карты: 4048415020898850