• 【第四阶段】kotlin语言的Map集合学习


    1.Map集合的创建

    package Kotlin.Stage4
    
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)  //java代表键 1代表值
        val map2= mapOf(Pair("java",1),Pair("kotlin",2))//和上面写法等价
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.读取map的值

    • 方式1:使用[] 如果没有键不存在则返回null
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1 使用[] 如果不存在则返回null
        println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    执行结果
    在这里插入图片描述

    • 方式2:使用getOrDefault 如果不存在返回默认值
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1 使用[] 如果不存在则返回null
        println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
        println()
        //方式2 使用getOrDefault   如果不存在返回默认值
        println(map.getOrDefault("java",-1))
        println(map.getOrDefault("c++",-1))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    执行结果
    在这里插入图片描述

    • 方式3:使用getOrElse 如果不存在返回指定值
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1 使用[] 如果不存在则返回null
        println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
        println()
        //方式2 使用getOrDefault   如果不存在返回默认值
        println(map.getOrDefault("java",-1))
        println(map.getOrDefault("c++",-1))
        println()
        //方式3:使用getOrElse  如果不存在返回指定值
        println(map.getOrElse("java"){-1})
        println(map.getOrElse("c++"){-1})
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    执行结果
    在这里插入图片描述

    • 方式4:和java一样,其中使用get 如果不存在则返回null;使用getValue,如果不存在则会崩溃,不建议使用。
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1 使用[] 如果不存在则返回null
        println("方式1:java的值:"+map["java"]+"如果不存在返回null:"+map["c++"])
        println()
        //方式2 使用getOrDefault   如果不存在返回默认值
        println(map.getOrDefault("java",-1))
        println(map.getOrDefault("c++",-1))
        println()
        //方式3:使用getOrElse  如果不存在返回指定值
        println(map.getOrElse("java"){-1})
        println(map.getOrElse("c++"){-1})
        println()
        //方式4:和java一样
        println(map.get("java"))//等价于[]方式
        println(map.get("c++"))
        println(map.getValue("java"))
        println(map.getValue("c++")) //会崩溃。不建议使用
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    执行结果
    在这里插入图片描述
    3.map的遍历

    • 方式1:foreach it
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1;foreach  it
        map.forEach(){
            //it代表每一个(k,v)
            print(" key${it.key},value${it.value}")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    执行结果
    在这里插入图片描述

    • 方式2 forEach()不使用默认it
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1;foreach  it
        map.forEach(){
            //it代表每一个(k,v)
            println(" key${it.key},value${it.value}")
        }
        println()
        //方式2:不使用默认it
        map.forEach(){key:String,value:Int->
            //覆盖默认的it
            println(" key$key,value$value")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    执行结果
    在这里插入图片描述

    • 方式3 foreach() 输入带括号
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1;foreach  it
        map.forEach(){
            //it代表每一个(k,v)
            println(" key${it.key},value${it.value}")
        }
        println()
        //方式2:不使用默认it
        map.forEach(){key:String,value:Int->
            //覆盖默认的it
            println(" key$key,value$value")
        }
        println()
        //方式3
        map.forEach(){(k,v)->
            println(" key$k,value$v")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    执行结果
    在这里插入图片描述

    • 方式4 for循环
    package Kotlin.Stage4
    
    fun main() {
        val map= mapOf("java" to 1,"kotlin" to 2)
        //方式1;foreach  it
        map.forEach(){
            //it代表每一个(k,v)
            println(" key${it.key},value${it.value}")
        }
        println()
        //方式2:不使用默认it
        map.forEach(){key:String,value:Int->
            //覆盖默认的it
            println(" key$key,value$value")
        }
        println()
        //方式3
        map.forEach(){(k,v)->
            println(" key$k,value$v")
        }
        println()
        //方式4
        for (item in map){
            //item代表每一个(k,v)
            println(" key${item.key},value${item.value}")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    执行结果
    在这里插入图片描述
    4.map可变集合

    • 可变map的定义和操作
    fun main() {
        val map= mutableMapOf("AAA" to 1,"BBB" to 2)
        //可变集合操作
        map+="CCC" to (3)
        map+="DDD" to 4
        map-="DDD"
        map["EEE"]=5
        map.put("FFF",6)
        println(map["EEE"])//put和[]等价
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    执行结果
    在这里插入图片描述

    • getOrPut
    fun main() {
        val map= mutableMapOf("AAA" to 1,"BBB" to 2)
        //可变集合操作
        map+="CCC" to (3)
        map+="DDD" to 4
        map-="DDD"
        map["EEE"]=5
        map.put("FFF",6)
        println(map["EEE"])//put和[]等价
    
        println()
        //  getOrPut
        //键没有的情况,会将他先添加进集合中。
        map.getOrPut("GGG"){8}
        println(map["GGG"])
        //键有的情况,会读取存在的值,并且默认值失效
        map.getOrPut("AAA"){9}
        println(map["AAA"])
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    执行结果
    在这里插入图片描述

  • 相关阅读:
    Android 视频播放延时抖动那些事
    项目开发所需依赖汇总
    uniapp 跳转页面 和 记录一些其他的坑
    Redis中的SDS理解
    【Nginx41】Nginx学习:Stream四层负载均衡浅尝及总结
    基于Socket编程下 实现Linux-Linux、Linux-Windows tcp通信
    【Java 基础篇】Java网络编程基础知识详解
    高维数据降维(机器学习)
    基于微信小程序的电影院票务系统设计与实现-计算机毕业设计源码+LW文档
    docker启动命令,docker重启命令,docker关闭命令
  • 原文地址:https://blog.csdn.net/ll_j_21/article/details/132941844