• Kotlin语言数组,Map集合的学习


    一、Kotlin中的数组类型

    Kotlin语言中的各种数组类型,虽然是引用类型,背后可以编译成Java基本数据类型
            IntArray                intArrayOf
            DoubleArray        doubleArrayOf

            LongArray            longArrayOf

            ShortArray           shortArrayOf

            ByteArray             byteArrayOf

            FloatArray            floatArrayOf

            BooleanArray       booleanArrayOf
            Array                    arrayOf     //对象数组

    1. //1.intArrayOf 常规操作的越界崩溃
    2. //elementAtOrElse elementAtOrNull
    3. //List集合转数组
    4. //arrayOf Array
    5. fun main() {
    6. //1.intArrayOf 常规操作的越界崩溃
    7. val intArray : IntArray = intArrayOf(1,2,3)
    8. println(intArray[0]) //这个越界了会崩溃
    9. //越界崩溃解决办法
    10. println(intArray.elementAtOrElse(100) {-1}) //由于是数组,int类型,因此越界返回也为int
    11. println(intArray.elementOrNull(100) ?= "你越界啦")
    12. //List集合转数组
    13. val charArray : CharArray = listOf('A','B','C').toCharArray()
    14. println(CharArray)
    15. //arrayOf :是一个对象类型,返回一个对象舒服
    16. val objArray : Array = arrayOf(File("AAA"),File("BBB"),File("CCC"))
    17. }

     二、Kotlin语言的Map创建

    1. fun main() {
    2. val mMap1 : MapDouble> = mapOfDouble>("lisi" to(52.34),"wangwu" to 66.6)
    3. val mMap2 = mapOF(Pair("Derr",23.3))
    4. //上面两种方式都是等价的
    5. }

    三、Kotlin语言的读取Map的值

    1. fun main() {
    2. val mMap : MapInt> = mapOf("De" to 123,"Ke" to 11)
    3. //方式一
    4. println(mMap["De"]) //被后续对[] 运算符冲在了
    5. println(mMap["ke"])
    6. //map通过key找,找不到会返回null
    7. println(mMap["1"]) //null
    8. //方式二 getOrDefault
    9. println(mMap.getOrDefault("De",-1))
    10. println(mMap.getOrDefault("Deee",-1)) //-1
    11. //方式三 getOrElse
    12. println(mMap.getOrElse("DEEE") {-1}) //-1
    13. //方式四 getValue 与Java一样,会崩溃,尽量不要使用这个方式
    14. println(mMap.getValue("DEEEE")) //.get函数和[] 是等价的
    15. }

    四、Kotlin语言的遍历Map学习

    1. fun main() {
    2. val map: MapInt> = mapOf(Pair("DE",12),Pair("KE",11))
    3. //第一种方式
    4. map.forEach {
    5. // it内容 == 每一个元素 K和 V
    6. // it类型 == Map.Entry
    7. println("${it.key},${it.value}")
    8. }
    9. println()
    10. //第二种方式
    11. map.forEach { kk,vv -> //把默认的it给覆盖了
    12. println("$kk,$vv")
    13. }
    14. //第三种方式
    15. map.forEach { (k,v) ->
    16. println("$k,$v")
    17. }
    18. //第四种方式
    19. for (item in map) {
    20. //item内容 每一个元素k和v
    21. println("key:${item.key},value:${item.value}")
    22. }
    23. }

    五、Kotlin语言的可变Map集合学习

    1. //1.可变集合的操作 += [] put
    2. //2.getOrPut 没有的情况
    3. //3.getOrPut 有的情况
    4. fun main() {
    5. //1.可变集合的操作 += [] put
    6. val map = mapOf(Pair("DE",11),"KE" to 12) //不可变
    7. val map = mutableMapOf(Pair("DE",11),"KE" to 12) //可变
    8. map += "AAA" to(111)
    9. map -= "AAA"
    10. map["CCC"] = 888
    11. map.put("DDD",113) //put和[] 等价
    12. //2.getOrPut没有的情况
    13. //如果整个map集合里面没有FFF的key元素,我就帮你先添加到map集合中去,然后再从map集合中获取
    14. val r = map.getOrPut("FFF") {555}
    15. println(r) //555
    16. println(map["FFF"]) //他已经帮你加入进去了,所以你可以获取
    17. //3.getOrPut 有的情况
    18. map.getOrPut("Derry") {666} //发现Derry有 就直接获取,没有就666
    19. println(r2) //666
    20. }
  • 相关阅读:
    Linux 服务器 apt 源配置方法【一文读懂】
    Hadoop3教程(三):HDFS文件系统常用命令一览
    zabbix的rpm包部署
    LeetCode 练习——剑指 Offer 66. 构建乘积数组
    项目实践---贪吃蛇小游戏(下)
    Java 线程安全 与 锁
    陈宏申:浅谈京东电商商品文案挖掘难点与优化实践
    Python基础入门篇【32】--面向对象:装饰器与类的常用装饰器
    中国高分辨率高质量PM2.5数据集2000-2021
    城市场景车路协同网络需求研究
  • 原文地址:https://blog.csdn.net/XXX_17/article/details/127728102