如何在不区分大小写的顺序中对对象列表进行排序?

时间:2017-08-28 13:55:36

标签: kotlin

我们说我在Kotlin有一个字符串列表:stringList: MutableList<String>

然后通过这样做很容易按不区分大小写的顺序对这样的列表进行排序:

stringList.sortWith(String.CASE_INSENSITIVE_ORDER)

但是如何按不区分大小写的顺序对对象列表进行排序?例如:places: MutableList<Place>

其中Place是一个包含2个字段的简单类 - name: Stringid: Int,我想按name字段对这些地方进行排序。

我尝试过这样的事情:places.sortedWith(compareBy { it.name })但是这个解决方案并没有考虑到字母大小写。

2 个答案:

答案 0 :(得分:22)

看起来compareBy可能会将Comparator作为参数,请参阅此处的文档:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.comparisons/compare-by.html

尝试:

places.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.name }))

答案 1 :(得分:1)

按升序排序 - 不区分大小写:

myList.sortedBy { it.name?.toLowerCase() }

降序排序 - 不区分大小写:

myList.sortedByDescending { it.name?.toLowerCase() }