我有一个包含自定义对象的列表。我想首先根据字母顺序对列表进行分组,然后根据枚举值对这些组进行排序。让我通过代码向您展示:
我的列表:
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))
我的
Severity
枚举类: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))
如您所见,列表中的所有项目均按字母顺序排列,并按照Severity枚举类进行排序。
我的想法:
我打算在列表中创建列表。这些子列表将按字母顺序保存所有项目的组,稍后我将根据
Severity
枚举值对子列表的项目进行排序。我该如何实现?
最佳答案
如果你有data class Item(val country: String, val severity: Severity)
和
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 }
)
)
关于android - 在Kotlin中对单个列表进行分组和排序的更好方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56388860/