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

2022-01-06  本文已影响0人  会写代码的小猿猴

1、kotlin中的集合

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

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不相等

上一篇 下一篇

猜你喜欢

热点阅读