Kotlin - Map:Mapof()

Kotlin - Map:Mapof() 首页 / Kotlin入门教程 / Kotlin - Map:Mapof()

Kotlin Map是一个界面和元素的通用集合。 Map接口以键和值对的形式保存数据。Map键是唯一的,每个键仅保留一个值。键和值可以是不同的对,例如<Int,Int>,<Int,String>,<Char,String>等。此接口是不可变的,大小固定,其方法支持只读访问。

要使用Map接口,无涯教程需要使用其名为mapOf() 或 mapOf<k,v>()函数。

Map接口声明

interface Map<K, out V> (source)

Map接口属性

PropertiesDescription
abstract val entries: Set<Entry<K, V>>返回当前Map所有键值对。
abstract val keys: Set<K>返回当前Map中所有键。
abstract val values: Collection<V>返回当前Map中所有值,可能包含重复的值。

Map接口函数

Map界面中有几个函数可用。下面介绍了Map接口的一些函数。

FunctionsDescription
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从当前只读Map返回给定对象的属性值。
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实例,包装原始Map,并迭代。
fun <K, V> Map<out K, V>.asSequence(): Sequence<Entry<K, V>>创建一个Sequence实例,包装当前Map并在迭代后返回其条目。
operator fun <K, V> Map<out K, V>.iterator(): Iterator<Entry<K, V>>在Map中的条目上返回一个Iterator。
operator fun Map.minus(key: K): Map从Map中删除指定键。
operator fun <K, V> Map<out K, V>.minus( keys: Iterable<K> ): Map<K, V>返回除了keys外的所有元素。
operator fun <K, V> Map<out K, V>.minus( keys: Sequence<K> ): Map<K, V>返回除了keys外的所有元素。
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 "Ajay", 4 to "Vijay", 3 to "Learnfk")
    for(key in myMap.keys){
        println(myMap[key])
    }
}

输出:

Ajay
Vijay
Learnfk

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 "Ajay", 4 to "Vijay", 3 to "Learnfk")
    for(key in myMap.keys){
        println("Element at key $key = ${myMap.get(key)}")
    }
}

输出:

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk

Map示例3

如果无涯教程不能指定Map Interface的任何键和值类型,那么它可以采用不同类型的键和值。这是因为所有类内部都使用<Any,Any>类型。例如:

fun main(args: Array<String>){

    val myMap = mapOf(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk","ram" to "Ram", "two" to 2)
    for(key in myMap.keys){
        println("Element at key $key = ${myMap.get(key)}")
    }
}

输出:

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
Element at key ram = Ram
Element at key two = 2

Map示例4-mapOf().getValue()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    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 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
.....myMap.getValue(4).......
Vijay

Map示例5 - mapOf().contains()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    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 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
.....myMap.contains(3).......
true

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

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    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 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
......myMap.containsKey(2)......
false

Map示例7 - mapOf().containsValue()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    for(key in myMap.keys){
        println("Element at key $key = ${myMap.get(key)}")
    }
         println("......myMap.containsValue(\"Ajay\")......")
         println(myMap.containsValue("Ajay"))
}

输出:

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
......myMap.containsValue("Ajay")......
true

Map示例8 - mapOf().get()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    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 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
.....myMap.get(1).......
Ajay

Map示例9 - mapOf().getOrDefault()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    for(key in myMap.keys){
        println("Element at key $key = ${myMap.get(key)}")
    }
  
        println("......myMap.getOrDefault(3, \"Vijay\")......")
        println(myMap.getOrDefault(3, "Vijay"))
}

输出:

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
......myMap.getOrDefault(3, "Vijay")......
Learnfk

Map示例10 - mapOf().asIterable ()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    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 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
.......myMap.asIterable().....
key = 1 value = Ajay
key = 4 value = Vijay
key = 3 value = Learnfk

Map示例11 - mapOf().iterator()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    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 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
......myMap.iterator()......
key = 1 value = Ajay
key = 4 value = Vijay
key = 3 value = Learnfk

Map示例12 - mapOf().minus()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    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 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
......myMap.minus(4)......
Ajay
Learnfk

Map示例13 - mapOf().plus()

fun main(args: Array<String>){

    val myMap: Map<Int,String> = mapOf<Int, String>(1 to "Ajay", 4 to "Vijay", 3 to "Learnfk")

    for(key in myMap.keys){
        println("Element at key $key = ${myMap.get(key)}")
    }
      println("......myMap.plus(Pair(5, \"Rohan\"))......")
      for(p in myMap.plus(Pair(5, "Rohan"))){
          println("Element at key ${p.key} = ${p.value}")
      }
  
}

输出:

Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
......myMap.plus(Pair(5, "Rohan"))......
Element at key 1 = Ajay
Element at key 4 = Vijay
Element at key 3 = Learnfk
Element at key 5 = Rohan

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Nginx核心知识150讲 -〔陶辉〕

10x程序员工作法 -〔郑晔〕

高并发系统设计40问 -〔唐扬〕

张汉东的Rust实战课 -〔张汉东〕

乔新亮的CTO成长复盘 -〔乔新亮〕

物联网开发实战 -〔郭朝斌〕

体验设计案例课 -〔炒炒〕

运维监控系统实战笔记 -〔秦晓辉〕

深入拆解消息队列47讲 -〔许文强〕

好记忆不如烂笔头。留下您的足迹吧 :)