лучше подходить к группе и сортировать единый список в котлине - PullRequest
0 голосов
/ 31 мая 2019

У меня есть список, который состоит из пользовательских объектов. Я хочу сначала сгруппировать список в алфавитном порядке, а затем отсортировать эти группы по значениям перечисления. Позвольте мне показать вам код:

Мой список:

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))

My Severity enum class:

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 enum.

Как мне этого добиться?

1 Ответ

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

Если у вас есть

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