因为时间很短,所以内容不是很复杂,写一个有价值的小知识,主要是为了保持每日学习和写作的习惯,大作还是会写到相关的主题里面,尽量做到周更。敬请关注本人的主要作品集:
为了能够最大限度的保证文章的质量,日更主要采用翻译的方法来完成。本系列将主要翻译Kotlin官网的内容。具体的地址
https://kotlinlang.org/docs/home.html
八 集合-Map
Map将项目存储为键值对。您可以通过引用键来访问该值。你可以把Map想象成食物菜单。你可以通过找到你想吃的食物(Key)来找到价格(Value)。如果您想在不使用数字索引的情况下(像列表一样)查找值,则Map非常有用。
- Map中的键都必须是唯一的,这样Kotlin才能理解您想要获得的值。
- Map中的值中可以重复。
要创建只读Map,请使用mapOf()函数。
要创建可变MutableMap,请使用mutableMapOf()函数。
在创建Map时,Kotlin可以推断存储的项目的类型。要显式声明类型,请在Map声明后添加尖括号<>内的键和值的类型。例如:MutableMap<String,Int>。键的类型为String,值的类型为Int。
创建映射的最简单方法是在每个键及其相关值之间使用to:
val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println(readOnlyJuiceMenu)
// {apple=100, kiwi=190, orange=100}
// Mutable map with explicit type declaration
val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println(juiceMenu)
// {apple=100, kiwi=190, orange=100}
为了防止不必要的修改,通过将MutableMap强制转换为Map来获得MutableMap的只读视图:
val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
val juiceMenuLocked: Map<String, Int> = juiceMenu
要访问Map中的值,请使用带索引的访问运算符[]及其键:
// Read-only map
val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println("The value of apple juice is: ${readOnlyJuiceMenu["apple"]}")
// The value of apple juice is: 100
要获取Map中的项数,请使用.count()函数:
// Read-only map
val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println("This map has ${readOnlyJuiceMenu.count()} key-value pairs")
// This map has 3 key-value pairs
要在MutableMap中添加或删除项,请分别使用.put()和.remove()函数:
val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
juiceMenu.put("coconut", 150) // Add key "coconut" with value 150 to the map
println(juiceMenu)
// {apple=100, kiwi=190, orange=100, coconut=150}
juiceMenu.remove("orange") // Remove key "orange" from the map
println(juiceMenu)
// {apple=100, kiwi=190, coconut=150}
若要检查Map中是否已包含特定键,请使用.contentsKey()函数:
val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println(readOnlyJuiceMenu.containsKey("kiwi"))
// true
要获得Map的键或值的集合,请分别使用keys和values:
val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println(readOnlyJuiceMenu.keys)
// [apple, kiwi, orange]
println(readOnlyJuiceMenu.values)
// [100, 190, 100]
keys和values是对象属性的示例。若要访问对象的属性,请在对象后面写上属性名称并附加句点。属性在类一章中有更详细的讨论。此时,您只需要知道如何访问它们。
要检查键或值是否在映射中,请使用in运算符:
val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println("orange" in readOnlyJuiceMenu.keys)
// true
println(200 in readOnlyJuiceMenu.values)
有关如何处理集合的详细信息,请参考 Collections.。
译者注释:
- to 并不是kotln的一个关键字,而是一个扩展方法。它将两个对象转换成一个Pair对象,从而用于构造Map
网友评论