Kotlin教程:Map接口13个示例

2020-04-2121:53:18编程语言入门到精通Comments1,702 views字数 7245阅读模式

Kotlin Map是一个接口和通用的元素集合。 Map接口以键和值对的形式保存数据。 映射的键是唯一的,每个键只保留一个值。 键和值可以是不同类型的对,例如<Int,Int><Int,String><Char,String>等。 此接口是不可变的,它的大小固定,方法支持只读访问。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

要使用Map接口,需要使用mapOf()mapOf <k,v>()函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Map接口声明文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

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接口的函数如下所述。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

函数描述
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类型的值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

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])
    }
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

1 => Java
4 => Kotlin
3 => Python
Shell

Map接口示例2 - 泛型

更具体地说,可以提供泛型类型Map,例如myMap:Map <k,v> = mapOf <k,v>()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

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)}")
    }
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key 1 => Maxsu
Element at key 4 => Kotlin
Element at key 3 => Java
Shell

Map接口示例3 - 非泛型

如果不能指定Map接口的任何类型的键和值,那么它可以采用不同类型的键和值。 这是因为所有类内部都使用<Any,Any>类型。 例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

fun main(args: Array<String>){

    val myMap = mapOf(1 to "Java", 4 to "Python", 3 to "PHP","one" to "Yiibai", "two" to 2)
    for(key in myMap.keys){
        println("Element at key: '$key' => ${myMap.get(key)}")
    }
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key: '1' => Java
Element at key: '4' => Python
Element at key: '3' => PHP
Element at key: 'one' => Yiibai
Element at key: 'two' => 2
Shell

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))
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key 1 = Java
Element at key 4 = Kotlin
Element at key 3 = Python
.....myMap.getValue(4).......
Kotlin
Shell

Map接口示例5 - mapOf().contains()函数

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Yiibai", 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))
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key 1 = Yiibai
Element at key 4 = Java
Element at key 3 = Kotlin
.....myMap.contains(3).......
true
Shell

Map接口示例6 - mapOf().containsKey()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Yiibai", 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))
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key 1 = Yiibai
Element at key 4 = Python
Element at key 3 = Kotlin
......myMap.containsKey(2)......
false
Shell

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"))
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key 1 = Maxsu
Element at key 4 = Susen
Element at key 3 = Python
......myMap.containsValue("Susen")......
true
Shell

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))
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key 1 = Maxsu
Element at key 4 = Python
Element at key 3 = Susen
.....myMap.get(1).......
Maxsu
Shell

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"))
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key 1 = Maxsu
Element at key 4 = Susen
Element at key 3 = Python
......myMap.getOrDefault(3, "Python")......
Python3
Shell

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}")
    }
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

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
Shell

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}")
    }
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

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
Shell

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])
    }
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

Element at key:1 => Maxsu
Element at key:4 => Susen
Element at key:3 => Python
......myMap.minus(4)......
Maxsu
Python
Shell

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}")
    }
}
Kotlin

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

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

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/kotlin/kotlin-map.html#article-start文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/18285.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/18285.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定