сортировать список пользовательских объектов на основе enum в kotlin - PullRequest
1 голос
/ 29 мая 2019

У меня есть список пользовательских объектов и класс Enum.Я должен отсортировать список на основе свойств перечисления.Например:

Мой список:

val list = listOf(Item(1,Severity.CRITICAL), Item(3, Severity.LOW), Item(2, Severity.SEVERE))

Мой перечислимый класс:

enum class Severity{
 CRITICAL, SEVERE, MODERATE, LOW
}

Мой отсортированный список должен быть:

listOf(Item(1,Severity.CRITICAL), Item(2, Severity.SEVERE), Item(3, Severity.LOW))

Заказделается согласно порядку в классе enum.Как мне этого добиться?

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

Используйте функцию sortedBy.Это сделает работу очень легко.

val ans = list.sortedBy { it.severity }
0 голосов
/ 29 мая 2019

Поскольку enum сопоставим, объект enum может быть отсортирован путем извлечения значения enum от объекта, и используйте CompareBy

val sortedList = list.sortedWith(compareBy { it.severity })

Edit: Если упорядочение элемента является «естественной» частью, рассмотрим реализацию Comparable интерфейса Так будет как

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...