- Kotlin环境设置(命令行)
- Kotlin Hello World程序(命令行)
- Kotlin程序概念解释
- Kotlin开发环境设置(IDE)
- Kotlin第一个程序(IDE)
- Kotlin变量
- Kotlin数据类型
- Kotlin类型转换
- Kotlin运算符
- Kotlin表达式、语句和块
- Kotlin标准输入/输出
- Kotlin注释
- 控制流程
- 函数
- 数组
- 字符串
- 异常处理
- 空安全
- 集合
- 注解
- 反射
- Kotlin OOP
- 范围
- Java互操作性
- 正则表达式
Kotlin Map接口
Kotlin Map
是一个接口和通用的元素集合。 Map
接口以键和值对的形式保存数据。 映射的键是唯一的,每个键只保留一个值。 键和值可以是不同类型的对,例如<Int,Int>
,<Int,String>
,<Char,String>
等。 此接口是不可变的,它的大小固定,方法支持只读访问。
要使用Map接口,需要使用mapOf()
或mapOf <k,v>()
函数。
Map接口声明
interface Map<K, out V> (source)
Map接口的属性
属性 | 描述 |
---|---|
abstract val entries: Set<Entry<K, V>> |
它仅返回当前映射中Set 接口的所有键和值对。 |
abstract val keys: Set<K> |
它仅返回当前映射中Set 接口的所有键。 |
abstract val keys: Set<K> |
它返回当前映射中的键和值对的数量。 |
abstract val values: Collection<V> |
它仅返回当前映射中所有值的读取集合。 此集合可能包含重复值。 |
Map接口函数
Map接口中有一些非常好用的函数,Map接口的函数如下所述。
函数 | 描述 |
---|---|
fun <K, V> Map<key, value>.getValue(key: K): V |
它返回给定键的值,如果映射中没有这样的键,则抛出异常。 |
operator fun <V, V1 : V> Map<in String,V>.getValue( thisRef: Any?, property: KProperty<*>): V1 |
它从当前只读映射返回给定对象的属性值。 |
operator fun <K, V> Map<out K, V>.contains(key: K): Boolean |
它检查在Map中是否包含给定的键。 |
fun <K> Map<out K, *>.containsKey(key: K): Boolean |
如果Map 包含指定的键,则返回true 。 |
fun <K, V> Map<K, V>.containsValue(value: V): Boolean |
如果map 有将一个或多个键映射到指定值,则返回true 。 |
fun <K, V> Map<out K, V>.getOrDefault(key: K,defaultValue: V ): V |
它返回由映射中的键对应的值,或者如果map不包含给定键的映射,则返回默认值。 |
fun <K, V> Map<out K, V>.asIterable(): Iterable<Entry<K, V>> |
它创建了一个Iterable 接口实例,它包装原始映射,在迭代时返回数据项目。 |
fun <K, V> Map<out K, V>.asIterable(): Iterable<Entry<K, V>> |
它创建了一个Iterable 接口实例,它包装原始映射,在迭代时返回数据项目。 |
fun <K, V> Map<out K, V>.asSequence(): Sequence<Entry<K, V>> |
它创建一个Sequence 接口实例,它包装当前映射并在迭代时返回数据项目。 |
operator fun <K, V> Map<out K, V>.iterator(): Iterator<Entry<K, V>> |
它返回Map中数据项目的迭代器。 |
operator fun Map.minus(key: K): Map |
它返回一个Map,其中包含原始Map的所有条目,但提及键的数据项目除外。 |
operator fun <K, V> Map<out K, V>.minus(keys: Iterable<K>): Map<K, V> |
它返回一个映射,其中包含原始映射的所有数据项目,除了那些包含在提及键集合中的数据项目键。 |
operator fun <K, V> Map<out K, V>.minus(keys: Sequence<K>): Map<K, V> |
它返回一个映射,其中包含原始映射的所有数据项目,除了那些包含在给定键序列中的数据项目键。 |
operator fun <K, V> Map<out K, V>.plus(pair: Pair<K, V>): Map<K, V> |
它通过从给定键值对向当前映射添加或替换数据项目来创建新的只读映射。 |
operator fun <K, V> Map<out K, V>.plus(pairs: Iterable<Pair<K, V>>): Map<K, V> |
它通过从给定的键值对集合中向当前映射添加或替换数据项目来创建新的只读映射。 |
operator fun <K, V> Map<out K, V>.plus(pairs: Sequence<Pair<K, V>>): Map<K, V> |
它通过从给定的键值对序列向当前映射添加或替换数据项目来创建新的只读映射。 |
Map接口示例1
下面使用mapOf <k,v>()
函数声明和遍历Map
值的示例。 在这个例子中,创建Int
类型的键和String
类型的值。
fun main(args: Array<String>){ val myMap = mapOf<Int,String>(1 to "Java", 4 to "Kotlin", 3 to "Python") for(key in myMap.keys){ println(key.toString() +" => "+myMap[key]) } }
执行上面示例代码,得到以下结果 -
1 => Java 4 => Kotlin 3 => Python
Map接口示例2 - 泛型
更具体地说,可以提供泛型类型Map
,例如myMap:Map <k,v> = mapOf <k,v>()
。
fun main(args: Array<String>){ val myMap: Map<Int, String> = mapOf<Int,String>(1 to "Maxsu", 4 to "Kotlin", 3 to "Java") for(key in myMap.keys){ println("Element at key $key => ${myMap.get(key)}") } }
执行上面示例代码,得到以下结果 -
Element at key 1 => Maxsu Element at key 4 => Kotlin Element at key 3 => Java
Map接口示例3 - 非泛型
如果不能指定Map
接口的任何类型的键和值,那么它可以采用不同类型的键和值。 这是因为所有类内部都使用<Any,Any>
类型。 例如:
fun main(args: Array<String>){ val myMap = mapOf(1 to "Java", 4 to "Python", 3 to "PHP","one" to "zyiz", "two" to 2) for(key in myMap.keys){ println("Element at key: '$key' => ${myMap.get(key)}") } }
执行上面示例代码,得到以下结果 -
Element at key: '1' => Java Element at key: '4' => Python Element at key: '3' => PHP Element at key: 'one' => zyiz Element at key: 'two' => 2
Map接口示例4 - mapOf().getValue()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Java", 4 to "Kotlin", 3 to "Python") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".....myMap.getValue(4).......") println(myMap.getValue(4)) }
执行上面示例代码,得到以下结果 -
Element at key 1 = Java Element at key 4 = Kotlin Element at key 3 = Python .....myMap.getValue(4)....... Kotlin
Map接口示例5 - mapOf().contains()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "zyiz", 4 to "Java", 3 to "Kotlin") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".....myMap.contains(3).......") println( myMap.contains(3)) }
执行上面示例代码,得到以下结果 -
Element at key 1 = zyiz Element at key 4 = Java Element at key 3 = Kotlin .....myMap.contains(3)....... true
Map接口示例6 - mapOf().containsKey()
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "zyiz", 4 to "Python", 3 to "Kotlin") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.containsKey(2)......") println(myMap.containsKey(2)) }
执行上面示例代码,得到以下结果 -
Element at key 1 = zyiz Element at key 4 = Python Element at key 3 = Kotlin ......myMap.containsKey(2)...... false
Map接口示例7 - mapOf().containsValue()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Maxsu", 4 to "Susen", 3 to "Python") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.containsValue(\"Susen\")......") println(myMap.containsValue("Susen")) }
执行上面示例代码,得到以下结果 -
Element at key 1 = Maxsu Element at key 4 = Susen Element at key 3 = Python ......myMap.containsValue("Susen")...... true
Map接口示例8 - mapOf().get()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Maxsu", 4 to "Python", 3 to "Susen") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".....myMap.get(1).......") println(myMap.get(1)) }
执行上面示例代码,得到以下结果 -
Element at key 1 = Maxsu Element at key 4 = Python Element at key 3 = Susen .....myMap.get(1)....... Maxsu
Map接口示例9 - mapOf().getOrDefault()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Maxsu", 4 to "Susen", 3 to "Python") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.getOrDefault(3, \"Python\")......") println(myMap.getOrDefault(36, "Python3")) }
执行上面示例代码,得到以下结果 -
Element at key 1 = Maxsu Element at key 4 = Susen Element at key 3 = Python ......myMap.getOrDefault(3, "Python")...... Python3
Map接口示例10 - mapOf().asIterable ()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Maxsu", 4 to "Susen", 3 to "Python") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println(".......myMap.asIterable().....") for(itr in myMap.asIterable()){ println("key = ${itr.key} value = ${itr.value}") } }
执行上面示例代码,得到以下结果 -
Element at key 1 = Maxsu Element at key 4 = Susen Element at key 3 = Python .......myMap.asIterable()..... key = 1 value = Maxsu key = 4 value = Susen key = 3 value = Python
Map接口示例11 - mapOf().iterator ()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Maxsu", 4 to "Susen", 3 to "Python") for(key in myMap.keys){ println("Element at:key $key => ${myMap.get(key)}") } println("......myMap.iterator()......") for(itr1 in myMap.iterator()){ println("key = ${itr1.key}, value = ${itr1.value}") } }
执行上面示例代码,得到以下结果 -
Element at:key 1 => Maxsu Element at:key 4 => Susen Element at:key 3 => Python ......myMap.iterator()...... key = 1, value = Maxsu key = 4, value = Susen key = 3, value = Python
Map接口示例12 - mapOf().minus()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Maxsu", 4 to "Susen", 3 to "Python") for(key in myMap.keys){ println("Element at key:$key => ${myMap.get(key)}") } println("......myMap.minus(4)......") for(m in myMap.minus(4)){ println(myMap[m.key]) } }
执行上面示例代码,得到以下结果 -
Element at key:1 => Maxsu Element at key:4 => Susen Element at key:3 => Python ......myMap.minus(4)...... Maxsu Python
Map接口示例13 - mapOf().plus()函数
fun main(args: Array<String>){ val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Maxsu", 4 to "Susen", 3 to "Python") for(key in myMap.keys){ println("Element at key $key = ${myMap.get(key)}") } println("......myMap.plus(Pair(5, \"Swift\"))......") for(p in myMap.plus(Pair(5, "Swift"))){ println("Element at key ${p.key} = ${p.value}") } }
执行上面示例代码,得到以下结果 -
Element at key 1 = Maxsu Element at key 4 = Susen Element at key 3 = Python ......myMap.plus(Pair(5, "Swift"))...... Element at key 1 = Maxsu Element at key 4 = Susen Element at key 3 = Python Element at key 5 = Swift
扫描二维码
程序员编程王