美文网首页
Kotlin基础--集合基础总结

Kotlin基础--集合基础总结

作者: d41f12d62517 | 来源:发表于2019-12-07 09:57 被阅读0次

    在Android日常开发中,数组和集合这两个数据容器是必不可少的。在Kotlin中集合同样是有三大类:List、Set、Map。作用含义都和Java 的类似。
    -- List 是有序集合
    -- Set 是唯一集合
    -- Map 是键值对集合

    如何构造集合

    Kotlin中集合又分为 可变集合 以及 不可变集合。可变集合都是有 mutable修饰的。但是构造集合都是大同小异,下边会直接通过代码演示说明之间的差异。

    通过元素进行构造

    • 不可变的集合构造方式
    fun createCollection(): Unit {
        //创建不可变有序集合 list
        val list = listOf<String>("你好", "再见", "你好")
        println("list elements is $list")
    
        //创建不可变唯一集合 set
        val set = setOf<Int>(1, 2, 3, 3, 4)
        println("set elements is $set")
    
        //创建不可变键值对集合 map
        val map1 = mapOf<Int, String>(1 to "小明", 2 to "大明", 3 to "大明")
        println("map elements is $map1")
        val map2 = mapOf<Int, String>(1 to "小明", 2 to "大明", 3 to "大明", 3 to "大能")
        println("map elements is $map2")
    }
    

    控制台打印

    list elements is [你好, 再见, 你好]
    set elements is [1, 2, 3, 4]
    map1 elements is {1=小明, 2=大明, 3=大明}
    map2 elements is {1=小明, 2=大明, 3=大能}
    

    可以看到,set集合有唯一性。map集合与Java中的map集合一样,key也是唯一性。Kotlin空安全的设计,默认创建下 value 是不能为 null 的。可以通过 ? 来输入 null。

        val map3 = mapOf<Int, String?>(1 to "小明", 2 to "大明", 3 to null)
        println("map3 elements is $map3")
    
    map3 elements is {1=小明, 2=大明, 3=null}
    
    • 可变集合创建
      可变集合创建,只需要在对应的集合前加上 mutable
    val mutableListOf = mutableListOf<String>()
    

    可变集合则可以在创建之后通过 add 等修改方法,添加或者删除集合中的元素。

    创建具体类型的集合

        val arrayList1 = ArrayList<Int>(listOf(1,2,3))
        println("arrayList1 is $arrayList1")
        arrayList1.add(6)
        println("arrayList1 is $arrayList1")
    
        val linkedList = LinkedList<String>(listOf("小明","大明"))
        println("linkedList is $linkedList")
        linkedList.addFirst("小能")
        println("linkedList is $linkedList")
        linkedList.addLast("大能")
        println("linkedList is $linkedList")
    
    arrayList1 is [1, 2, 3]
    arrayList1 is [1, 2, 3, 6]
    linkedList is [小明, 大明]
    linkedList is [小能, 小明, 大明]
    linkedList is [小能, 小明, 大明, 大能]
    

    集合的复制

    fun copyCollection(){
        val sourceList = mutableListOf<Int>(1, 3, 4, 5, 6, 7,7)
        println("sourceList is $sourceList")
        val copyList = sourceList.toMutableList()
        println("copyList is $copyList")
        println("===== modify source collection =====")
        copyList.add(9)
        println("sourceList is $sourceList")
        println("copyList is $copyList")
        println("===== transform list to set collection =====")
        val transformSet = sourceList.toMutableSet()
        println("sourceList is $sourceList")
        println("transformSet is $transformSet")
        println("===== sole reference =====")
        val reference = sourceList
        reference.add(10)
        println("reference is $reference")
        println("sourceList is $sourceList")
        println("copyList is $copyList")
        println("transformSet is $transformSet")
    }
    

    Kotlin 中集合的复制,相当于将数据重新备份到一个新的对象中,一个新的内存区域中。在修改拷贝之后的集合,原集合的数据内容也是不会发生改变的。
    同时,集合拷贝还可以将 List 的数据转为 Set 的数据。
    如果集合都是对应一个引用,则在修改集合内容的时候,同一个引用的集合数据也是同样会有修改的。

    相关文章

      网友评论

          本文标题:Kotlin基础--集合基础总结

          本文链接:https://www.haomeiwen.com/subject/rvzmwctx.html