美文网首页
kotlin-----集合list、map和set

kotlin-----集合list、map和set

作者: 会写代码的小猿猴 | 来源:发表于2022-01-06 15:21 被阅读0次

    1、kotlin中的集合

    集合是可变数量(可能为0)的一组条目,kotlin标准库提供一个整套用于集合管理的工具,各种集合对于解决问题都具有重要意义,并且经常用到。kotlin中的集合与Java基本类似,主要分为一下三种:

    • List:list是一个有序集合,可通过索引访问元素。同一个元素可以在list中出现多次,总结就是:元素是有序的,并且元素可以重复。
    • set是唯一元素的集合,它反映了集合(set)的数学抽象,它的元素是无序的,总结就是:元素无序且元素不能重复。
    • Map是一组键值对,一个键对应一个值,在Map集合里,键是唯一的,值可以重复。

    2、集合的可变性与不可变性

    kotlin中提供了两种集合,一种是可变集合,一种是不可变集合,可变集合就是前面加mutable的一种新的集合。
    不可变集合:

     var list= listOf("one","two","three")
     var set= setOf("one","two","three")
    

    以上面这种方式定义的集合元素是不可变的,不能进行添加、删除、替换操作
    可变集合:

    var numbers=mutablelistOf(1,2,3,4)
    numbers.add(5)
    numbers.removeAt(1)
    numbers[0]=0
    

    可变集合如上,可以进行添加,删除,修改操作。

    集合的几种排序方式:

    • 随机排序、升序排序、降序排序
    fun sort(){
        var numbers= mutableListOf(1,2,3,4,5)
        //随机排序
        numbers.shuffle()
        println(numbers)
        //升序排序
        numbers.sort()
        println(numbers)
        //降序排序
        numbers.sortDescending()
        println(numbers)
    }
    
    • 条件排序
      条件排序又称为单条件排序和多条件排序
      单条件排序:
    fun conditionSort() {
        var languageList: MutableList<Language> = mutableListOf()
        languageList.add(Language("java", 80))
        languageList.add(Language("C", 80))
        languageList.add(Language("dart", 90))
        languageList.add(Language("kotlin", 98))
        //单条件排序,根据分数排序
        languageList.sortBy { it.score }
        println(languageList)
    }
    
    data class Language(val name: String, val score: Int)
    

    排序结果:


    image.png

    我们发现排序后因为java和C分数都是80,所以只按照分数排序谁前谁后不好控制,所以需要用到多条件排序。
    多条件排序:

    fun conditionSort() {
        var languageList: MutableList<Language> = mutableListOf()
        languageList.add(Language("java", 80))
        languageList.add(Language("C", 80))
        languageList.add(Language("dart", 90))
        languageList.add(Language("kotlin", 98))
        //多条件排序,先根据score再根据name
       languageList.sortWith(compareBy({it.score},{it.name}))
        println(languageList)
    }
    
    data class Language(val name: String, val score: Int)
    

    结果:


    image.png

    注:

    fun listCompare() {
        val map1 = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key4" to 4)
        val map2 = mapOf( "key2" to 2, "key3" to 3,"key1" to 1, "key4" to 4)
        println("map1==map2? :${map1==map2}")
        val list1= listOf(1,2,3,4)
        val list2= listOf(4,3,2,1)
        println("list1==list2?:${list1==list2}")
    }
    

    结果:


    image.png

    总结:两个键值对相同但顺序不同的map相等
    两个值相同但顺序不同的list不相等

    相关文章

      网友评论

          本文标题:kotlin-----集合list、map和set

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