Android 在kotlin中对单个列表进行分组和排序的更好方法

Android 在kotlin中对单个列表进行分组和排序的更好方法,android,sorting,kotlin,Android,Sorting,Kotlin,我有一个由自定义对象组成的列表。我想首先根据字母顺序对列表进行分组,然后根据枚举值对这些组进行排序。让我通过代码向您展示: 我的名单: val list = listOf(Item("America",Severity.CRITICAL), Item("India", Severity.LOW),Item("Australia", Severity.SEVERE),Item("Indonesia", Severity.CRITICAL), Item("Japan", Severity.SEVER

我有一个由自定义对象组成的列表。我想首先根据字母顺序对列表进行分组,然后根据枚举值对这些组进行排序。让我通过代码向您展示:

我的名单:

val list = listOf(Item("America",Severity.CRITICAL), Item("India", Severity.LOW),Item("Australia", Severity.SEVERE),Item("Indonesia", Severity.CRITICAL), Item("Japan", Severity.SEVERE), Item("Jordan", Severity.CRITICAL))
我的
严重性
枚举类:

enum class Severity{
 CRITICAL, SEVERE, MODERATE, LOW
}
我的预期产出:

val sortedList = listOf(Item("America",Severity.CRITICAL),Item("Australia", Severity.SEVERE),Item("Indonesia", Severity.CRITICAL),Item("India", Severity.LOW), Item("Jordan", Severity.CRITICAL),Item("Japan", Severity.SEVERE))
如您所见,列表中的所有项目都按字母顺序排列,并按照严重性枚举类进行排序

我的想法:

我计划在列表中创建列表。这些子列表将按字母顺序保存所有项目的组,稍后我将根据
严重性
枚举值对子列表中的项目进行排序

我怎样才能做到这一点

如果你有

数据类项目(val国家/地区:字符串,val严重性:严重性)

然后

如果你有

数据类项目(val国家/地区:字符串,val严重性:严重性)

然后


所以你按第一个字母排序,然后按严重程度排序?是的!但是保持字母顺序@AmitSo你按第一个字母排序,然后按严重程度排序?是的!但是保持字母顺序@AmitAwesome!我从来没有想到过这种解决方案。你能解释一下这个
比较是如何工作的吗
我如何处理像
项(“,严重性.严重性)
没有位置这样的情况。我想把它们放在最后。一件物品没有国家,但有严重性是什么意思?也许你有设计问题?哦,我明白了!也许我以后可以看看,我现在很忙。但我想知道是不是最好让国家为空,然后让它成为一个空字符串。太棒了!我从来没有想到过这种解决方案。你能解释一下这个
比较是如何工作的吗
我如何处理像
项(“,严重性.严重性)
没有位置这样的情况。我想把它们放在最后。一件物品没有国家,但有严重性是什么意思?也许你有设计问题?哦,我明白了!也许我以后可以看看,我现在很忙。但我想知道是不是让country可以为空,然后让它成为一个空字符串更好。
enum class Severity(val value: Int) {
    CRITICAL(0), SEVERE(1), MODERATE(2), LOW(3)
}
val actual = list.sortedWith(
    compareBy(
        { it.country.first() },
        { it.severity.value }
    )
)