Ранее я использовал методы sortedWith и compareBy , и он способен сортировать по нескольким параметрам.
Я также использовал nullsLast метод раньше, и он довольно удобен, как и другие два.
Однако с этими методами я не могу найти способ сортировки коллекции с помощью следующих правил сортировки:
С учетом класса:
data class MyClass(
val varA: String?,
val varB: String
)
сортировка в соответствии с varA по алфавиту и нулями / пробелами, чтобы быть последними; затем
сортировка по varB по алфавиту
Итак, допустим, у меня есть следующая коллекция:
val collection = listOf(
MyClass(null, "A"),
MyClass("a", "B"),
MyClass("c", "C"),
MyClass("b", "D"),
MyClass("", "E"),
MyClass("a", "F"),
MyClass("b", "G"),
MyClass(null, "H"),
MyClass("", "I")
)
затем он должен быть отсортирован по:
MyClass("a", "B")
MyClass("a", "F")
MyClass("b", "D")
MyClass("b", "G")
MyClass("c", "C")
MyClass(null, "A")
MyClass("", "E")
MyClass(null, "H")
MyClass("", "I")
есть ли однострочный код, который я могу использовать так же, как compareBy , который использует параметр vararg