Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

发布时间:2022-06-26 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Kotlin学习(五)之----可变集合和不可变集合,以及解构写法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一. list 1.1.可变集合与不可变集合

    //TODO:不可变集合 -- 没有add,remove等方法
    var list3 = listOf("iam")
    println(list3.get(0))
    println(list3[0])
    println(list3.getOrNull(1)?:"越界了")
    println(list3.getOrElse(1,{"越界了"}))

    //TODO:可变集合  -- 有add,remove等方法
    var list1 = mutableListOf("is your")
    list1.remove("is your")
    println(list1.getOrNull(0))

    //TODO:不可变集合to可变集合
    var list2 = list3.toMutableList()
    println(list2[0])

    //TODO:可变集合to不可变集合
    var list4 = list1.toList()
    list1.removeIf { true } //TODO:删掉符合条件的元素(此处相当于全部删了)
    println(list1)

运行结果:

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

1.2三种遍历手段

    /**
     * 遍历三种写法
     * @author Allen
     */
    val list = listOf(1,2,3)

    for( i in list){
        print("$i ")
    }
    println()

    list.forEach {
        print("$it ")
    }
    println()

    list.forEachIndexed{index: Int, i: Int ->
        print("下标为$index 元素是$i  " )
    }
    println()

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

二. 解构写法

    /**
     * 解构写法
     */
    var(num1,num2,num3) = list;
    println("num1 = $num1; num2 = $num2;  num3 = $num3")
    num1 = 4; //可变
    println("num1 = $num1; num2 = $num2;  num3 = $num3")

    val(n1,n2,n3) = list
    //只读, n1 = 4会报错

    var(_,a2,a3) = list //_表示不接收,可以优化性能
    println("num2 = $a2; num3 = $n3")

通过反编译可以看出,_表示不接受数据,反编译没有给予变量

三.Set 与list有可变和不可变

    /**
     * set集合 没有set[0]的写法, 存放无序不重复的元素
     */
    var set = setOf(1,2,3) //TODO:不可变
    val set1 = mutableSetOf(1,2,3) //TODO:可变
    set1.add(4)
    println(set.elementAt(0))
    println(set1.elementAtOrNull(1))
    println(set1.elementAtOrElse(1,{"越接了"}))
    set1 += 5;
    set1 += 4
    println(set1.elementAt(4))

四. list 与 set 互转达到去重效果

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

五. 数组类型 1.1

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

注意:arrayof<>()存放的是Array<对象类型>,是类对象类型

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

1.2 集合转数组

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

1.3 arrayof<>()

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

六. Map 1.1获取并初始化map对象的俩种方式

    val map1 = mapOf<String,String>("小郑" to("二十"),"Allen" to("二十一"))
    val map2 : Map<String,Int> = mapOf(Pair("小郑",20), Pair("Allen",21))

1.2获取值的五种方式

    //获取值方式第一种([]符重载,其实跟get()一样)
    //无数据返回null,不会奔溃
    println(map1["小郑"])
    println(map1["佚名"])

    //获取值方式第二种
    //无数据返回null,不会奔溃
    println(map1.get("小郑"))
    println(map1.get("佚名"))

    //获取值方式第三种,defaulValue参数不是lambda
    //无数据返回defaultValue
    println(map1.getOrDefault("小郑","没有相关数据"))
    println(map1.getOrDefault("佚名","没有相关数据"))

    //获取值方式第四种,defaultValue参数是lambda(lambda作为最后一个参数可以放在括号外)
    //无数据返回defaultValue
    println(map1.getOrElse("小郑"){"没有相关数据"})
    println(map1.getOrElse("Allen",{"没有相关数据"}))
    println(map1.getOrElse("佚名"){"没有相关数据"})

    //获取值方式第五种,无数据会奔溃
    println(map1.getValue("小郑"))
    println(map1.getValue("佚名"))

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

1.3 map从可变到不可变:

    var map3 = map1.toMutableMap()
    map3.put("晓坚","二十一")
    map3.remove("Allen")
    map3.replace("小郑","二十","二十三")
    println(map3)

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

1.4map的四种遍历

    //第一种
    map3.forEach {
        print("${it.key}=${it.value}  ")
    }
    println()

    //第二种
    map3.forEach{ Key,Value ->
        print("$Key=$Value  ")
    } //key和value应该是配对的,所以这里会花波浪线表示这么做没有错,但是不太好
    println()

    //第三种
    map3.forEach { (K,V) ->
        print("$K=$V  ")
    }
    println()

    //第四种
    for(item in map3){
        print("$item  ")
    }

Kotlin学习(五)之----可变集合和不可变集合,以及解构写法

其中第四种相当于

    //第四种
    for(item : Map.Entry<String,String> in map3){
        print("$item  ")
    }

但由于默认会推导并增加:Map.Entry<String,String>,所以可以不写

脚本宝典总结

以上是脚本宝典为你收集整理的Kotlin学习(五)之----可变集合和不可变集合,以及解构写法全部内容,希望文章能够帮你解决Kotlin学习(五)之----可变集合和不可变集合,以及解构写法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: