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

一、Kotlin中的数组类型

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

        LongArray            longArrayOf

        ShortArray           shortArrayOf

        ByteArray             byteArrayOf

        FloatArray            floatArrayOf

        BooleanArray       booleanArrayOf
        Array                    arrayOf     //对象数组

//1.intArrayOf 常规操作的越界崩溃
//elementAtOrElse elementAtOrNull
//List集合转数组
//arrayOf Array<File>
fun main() {
    //1.intArrayOf 常规操作的越界崩溃
    val intArray : IntArray = intArrayOf(1,2,3)
    println(intArray[0]) //这个越界了会崩溃

    //越界崩溃解决办法
    println(intArray.elementAtOrElse(100) {-1}) //由于是数组,int类型,因此越界返回也为int
    println(intArray.elementOrNull(100) ?= "你越界啦")
    
    //List集合转数组
    val charArray : CharArray = listOf('A','B','C').toCharArray()
    println(CharArray)

    //arrayOf :是一个对象类型,返回一个对象舒服
    val objArray : Array = arrayOf(File("AAA"),File("BBB"),File("CCC"))
}

 二、Kotlin语言的Map创建

fun main() {
    val mMap1 : Map<String,Double> = mapOf<String,Double>("lisi" to(52.34),"wangwu" to 66.6)
    val mMap2 = mapOF(Pair("Derr",23.3))
    //上面两种方式都是等价的
}

三、Kotlin语言的读取Map的值

fun main() {
    val mMap : Map<String,Int> = mapOf("De" to 123,"Ke" to 11)

    //方式一
    println(mMap["De"])   //被后续对[] 运算符冲在了
    println(mMap["ke"])

    //map通过key找,找不到会返回null
    println(mMap["1"])   //null
    
    //方式二 getOrDefault
    println(mMap.getOrDefault("De",-1))
    println(mMap.getOrDefault("Deee",-1))  //-1
    
    //方式三 getOrElse
    println(mMap.getOrElse("DEEE") {-1})  //-1

    //方式四 getValue 与Java一样,会崩溃,尽量不要使用这个方式
    println(mMap.getValue("DEEEE"))  //.get函数和[] 是等价的
}

四、Kotlin语言的遍历Map学习

fun main() {
    val map: Map<String,Int> = mapOf(Pair("DE",12),Pair("KE",11))

    //第一种方式
    map.forEach {
        // it内容 == 每一个元素 K和 V
        // it类型 == Map.Entry<String,Int>
        println("${it.key},${it.value}")
    }

    println()
    
    //第二种方式
    map.forEach { kk,vv ->  //把默认的it给覆盖了
        println("$kk,$vv")
    }

    //第三种方式
    map.forEach { (k,v) ->
        println("$k,$v")
    }
    
    //第四种方式
    for (item in map) {
        //item内容 每一个元素k和v
        println("key:${item.key},value:${item.value}")
    }
}

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

//1.可变集合的操作 += [] put
//2.getOrPut 没有的情况
//3.getOrPut 有的情况
fun main() {
    //1.可变集合的操作 += [] put
    val map = mapOf(Pair("DE",11),"KE" to 12) //不可变
    val map = mutableMapOf(Pair("DE",11),"KE" to 12)  //可变
    
    map += "AAA" to(111)
    map -= "AAA"
    map["CCC"] = 888
    map.put("DDD",113)  //put和[] 等价

    //2.getOrPut没有的情况
    //如果整个map集合里面没有FFF的key元素,我就帮你先添加到map集合中去,然后再从map集合中获取
    val r = map.getOrPut("FFF") {555}
    println(r)  //555
    println(map["FFF"])  //他已经帮你加入进去了,所以你可以获取

    //3.getOrPut 有的情况
    map.getOrPut("Derry") {666}  //发现Derry有 就直接获取,没有就666
    println(r2)  //666
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值