У меня есть список пользовательских объектов и класс Enum. Я должен отсортировать список на основе свойств перечисления. Например:
Мой список:
val list = listOf(Item(1,Severity.CRITICAL), Item(3, Severity.LOW), Item(2, Severity.SEVERE))
Мой enum класс:
enum class Severity{
CRITICAL, SEVERE, MODERATE, LOW
}
Мой отсортированный список должен быть:
listOf(Item(1,Severity.CRITICAL), Item(2, Severity.SEVERE), Item(3, Severity.LOW))
Заказ осуществляется в соответствии с заказом в классе enum. Как мне этого добиться?
2 ответа
Используйте функцию sortedBy
. Это сделает работу очень легко.
val ans = list.sortedBy { it.severity }
Поскольку enum сопоставим, объект enum может быть отсортирован путем извлечения значения enum из объекта и использования compareBy
val sortedList = list.sortedWith(compareBy { it.severity })
Редактировать: если упорядочение элемента является «естественной» частью, рассмотрим реализацию сопоставимого интерфейса, поэтому он будет
data class Item(val index: Int, val severity: Severity) : Comparable<Item> {
override fun compareTo(other: Item): Int {
return this.severity.compareTo(other.severity)
}
}
val sortedList= list.sorted()
Похожие вопросы
Новые вопросы
kotlin
Kotlin - это статически типизированный язык программирования с открытым исходным кодом, поддерживаемый и разработанный JetBrains. Kotlin сочетает в себе ООП и функциональные возможности и ориентирован на совместимость, безопасность, ясность и поддержку инструментов. В настоящее время он нацелен на JVM и JavaScript, и это официально поддерживаемый язык на Android.