我们说我在Kotlin有一个字符串列表:stringList: MutableList<String>
然后通过这样做很容易按不区分大小写的顺序对这样的列表进行排序:
stringList.sortWith(String.CASE_INSENSITIVE_ORDER)
但是如何按不区分大小写的顺序对对象列表进行排序?例如:places: MutableList<Place>
其中Place
是一个包含2个字段的简单类 - name: String
和id: Int
,我想按name
字段对这些地方进行排序。
我尝试过这样的事情:places.sortedWith(compareBy { it.name })
但是这个解决方案并没有考虑到字母大小写。
答案 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() }