kotlin - 如何通过两个属性和排序器对对象列表进行排序

标签 kotlin functional-programming

我必须按姓氏和名字对对象列表进行排序(如果多个对象有相同的姓氏)。我还必须对这些应用 Collat​​or。

假设我可以对一个属性执行此操作:

val collator = Collator.getInstance(context.getResources().getConfiguration().locale)

myList.sortedWith(compareBy(collator, { it.lastName.toLowerCase() }))

但是是否也可以应用另一个限制来按名字排序?

最佳答案

您可以使用 thenBy 添加另一个排序条件:

val comparator =
        compareBy(collator) { p: Person -> p.lastName.toLowerCase() }
                .thenBy(collator) { p: Person -> p.firstName.toLowerCase() }
val result = myList.sortedWith(comparator)

关于kotlin - 如何通过两个属性和排序器对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52284130/

相关文章:

unit-testing - 如何使此功能可测试?

android - 在 fragment 中首次请求位置许可后,应用程序立即崩溃

javascript - 将修改器封装在 JS 模块内的类中是一种好习惯吗?

java - 使用比较器对列表列表进行排序

haskell - 在 OCaml 中扩展现有类型

android - ViewModel 支持属性 [kotlin]

android - Coroutines Handler 类行为

kotlin - 如何从for到Stream干净整洁(Kotlin)

android - 如何在 jetpack compose 的 LazyColumn 中使用 LazyColumn?

functional-programming - LISP:从用户读取数字并与数组索引进行比较