Карта Kotlin: Mapof ()
#KotlinКарта Котлин — это коллекция, которая содержит пары объектов. Карта содержит данные в виде пар, которые состоят из ключа и значения. Ключи карты являются уникальными, и карта содержит только одно значение для каждого ключа.
Котлин различает неизменяемые и изменчивые карты. Неизменяемые карты, созданные с помощью mapOf (), означают, что они доступны только для чтения, а изменяемые карты, созданные с помощью mutableMapOf (), означают, что мы можем выполнять как чтение, так и запись.
Синтаксис:
fun <K, V> mapOf(vararg pairs: Pair<K, V>): Map<K, V>
- Первое значение пары — это ключ, а второе — значение соответствующего ключа.
- Если несколько пар имеют один и тот же ключ, карта вернет значение последней пары.
- Записи на карте пройдены в указанном порядке.
Котлинская программа mapOf ()
fun main(args: Array<String>)
{
// объявляем карту целого числа в строку
val map = mapOf(1 to "Geeks", 2 to "for" , 3 to "Geeks")
// печать карты
println( map)
}
Выход:
{1=Geeks, 2=for, 3=Geeks}
Ключи карты, значения и записи —
fun main(args: Array<String>)
{
// объявляем карту целого числа в строку
val map = mapOf(1 to "One", 2 to "Two" , 3 to "Three", 4 to "Four")
println("Map Entries : "+map)
println("Map Keys: "+map.keys )
println("Map Values: "+map.values )
}
Выход:
Map Entries : {1=One, 2=Two, 3=Three, 4=Four}
Map Keys: [1, 2, 3, 4]
Map Values: [One, Two, Three, Four]
Размер карты —
Мы можем определить размер карты, используя два метода. Используя свойство размера карты и метод count () .
fun main() {
val ranks = mapOf(1 to "India",2 to "Australia",3 to "England",4 to "Africa")
// метод 1
println("The size of the map is: "+ranks.size)
// метод 2
println("The size of the map is: "+ranks.count())
}
Выход:
The size of the map is: 4 The size of the map is: 4
Пустая карта —
Мы можем создать пустую сериализуемую карту с помощью mapOf ()
Пример 2 из mapOf ()
fun main(args: Array<String>)
{
// здесь мы создали пустую карту с помощью mapOf ()
val map1 = mapOf<String , Int>()
println("Entries: " + map1.entries) // записи карты
println("Keys:" + map1.keys) // ключи карты
println("Values:" + map1.values) // значения карты
}
Выход:
Entries: [] Keys:[] Values:[]
Получить значения карты —
Мы можем извлечь значения из карты, используя различные методы, описанные в приведенной ниже программе.
fun main() {
val ranks = mapOf(1 to "India",2 to "Australia",3 to "England",4 to "Africa")
// метод 1
println("Team having rank #1 is: "+ranks[1])
// метод 2
println("Team having rank #3 is: "+ranks.getValue(3))
// метод 3
println("Team having rank #4 is: "+ranks.getOrDefault(4, 0))
// метод 4
val team = ranks.getOrElse(2 ,{ 0 })
println(team)
}
Выход:
Team having rank #1 is: India Team having rank #3 is: England Team having rank #4 is: Africa Australia
Карта содержит ключ или значения —
Мы можем определить, что карта содержит ключ или значение, используя методы containsKey () и containsValue () соответственно.
fun main() {
val colorsTopToBottom = mapOf("red" to 1, "orange" to 2, "yellow" to 3,
"green" to 4 , "blue" to 5, "indigo" to 6, "violet" to 7)
var color = "yellow"
if (colorsTopToBottom.containsKey(color)) {
println("Yes, it contains color $color")
} else {
println("No, it does not contain color $color")
}
val value = 8
if (colorsTopToBottom.containsValue(value)) {
println("Yes, it contains value $value")
} else {
println("No, it does not contain value $value")
}
}
Выход:
Yes, it contains color yellow No, it does not contain value 8
Два значения и один и тот же ключ —
Если два значения имеют одно и то же значение ключа , то карта будет содержать последнее значение этих чисел.
Пример 3 из mapOf ()
fun main(args: Array<String>)
{
// давайте создадим два значения с одинаковым ключом
val map = mapOf(1 to "geeks1",2 to "for" , 1 to "geeks2")
// возвращаем записи карты
println("Entries of map : " + map.entries)
}
Выход:
Entries of map : [1=geeks2, 2=for]
Пояснение:
Здесь значение ключа 1 было инициализировано двумя значениями: geeks1 и geeks2 , но, как мы знаем, у mapOf () может быть только одно значение для одного ключевого элемента , поэтому последнее значение сохраняется только картой, а geeks1 исключается.