侧边栏壁纸
博主头像
Stars-one博主等级

所有的创作都是具有价值的
Android Kotlin Java开发者,喜欢折腾搞机,开发小工具

  • 累计撰写 211 篇文章
  • 累计创建 45 个标签
  • 累计收到 23 条评论

目 录CONTENT

文章目录

Kotlin 集合对象的单条件和多条件排序

Stars-one
2023-06-14 / 0 评论 / 0 点赞 / 266 阅读 / 394 字

本文为作者原创,允许转载,不过请在文章开头明显处注明链接和出处!!! 谢谢配合~
作者:stars-one
链接:https://stars-one.site/2023/06/14/kotlin-list-sort

本文不是太难的东西,因为sortedWith之前没怎么用过,所以就记录下

平常开发经常使用到List,Map等数据集合类型,也会经常遇到排序的问题,可以直接使用sortedBysortedByDescending排序

多条件则是使用sortedWith,具体使用用例看见下文

单条件排序

方便起见,我们创建一个类Author,用来保存数据

data class Author(val name:String,val age:Int,val height:Int)
val authorList = listOf(
    Author("John", 30, 175),
    Author("Alice", 25, 165),
    Author("Bob", 25, 180),
    Author("John1", 25, 180),
    Author("Alice1", 30, 170)
)

authorList.sortedByDescending {
    it.age
}

多条件排序

实际上,kotlin里提供了compareBy方法,方便开发者快速创建一个比较器的对象

val personList = listOf(
    Person("John", 30, 175),
    Person("Alice", 25, 165),
    Person("Bob", 25, 180),
    Person("John", 25, 180),
    Person("Alice", 30, 170)
)

val sortedList = personList.sortedWith(compareBy(
    { it.name }, // 按姓名升序
    { -it.age }, // 按年龄降序
    { it.height } // 按身高升序
))

sortedList.forEach { println(it) }

compareBy方法介绍:

compareBy 是 Kotlin 标准库提供的一个函数,它可以帮助我们创建排序条件。该函数接收一个或多个 lambda 表达式,每个 lambda 表示一个排序条件。

compareBy 函数的返回值是一个 Comparator 对象,可以用于对集合中的元素进行排序。使用这个函数的好处是,可以将多个排序条件组合在一起,并且可以方便地扩展排序条件,而不必改变排序算法的实现。

0

评论区