美文网首页
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