2017-08-28 64 views
6

比方说,我有一个字符串在科特林列表:stringList: MutableList<String>如何在不区分大小写的顺序中对对象列表进行排序?

然后,它很容易通过做这个排序在不区分大小写的顺序,名单:

stringList.sortWith(String.CASE_INSENSITIVE_ORDER) 

但我会怎么排序的列表对象不区分大小写?例如:places: MutableList<Place>

哪里Place是2场的简单类 - name: Stringid: Int,我想这些地方由name场进行排序。

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

+0

您可以使用此参考链接:https://开头beginnersbook。 com/2013/12/java-arraylist-of-object-sort-example-comparable-and-comparator/ – ViramP

回答

7

看起来compareBy也许能够采取比较作为参数,在这里看到的文档:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.comparisons/compare-by.html

尝试:

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

很好的答案。谢谢! – user2999943

+0

只是来自阅读文档:D –

+2

FYI'places.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER){it.name})'工作原理相同,并且通常写入最终的lambda参数。 'places.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER,Place :: name))'也可以写成。 – ephemient

相关问题