Как отсортировать список объектов по двум свойствам и коллатору - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно отсортировать список объектов по lastName и firstName (в случае, если для нескольких объектов используется одно и то же lastName).Я также должен применить к ним Collator.

Предположим, что я могу сделать это для одного свойства:

val collator = Collator.getInstance(context.getResources().getConfiguration().locale)

myList.sortedWith(compareBy(collator, { it.lastName.toLowerCase() }))

Но возможно ли применить к этому другому ограничению также сортировку по firstName?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Вы можете добавить другой критерий сортировки с помощью thenBy:

val comparator =
        compareBy(collator) { p: Person -> p.lastName.toLowerCase() }
                .thenBy(collator) { p: Person -> p.firstName.toLowerCase() }
val result = myList.sortedWith(comparator)
0 голосов
/ 12 сентября 2018

Простейшим было бы просто объединить два свойства в лямбда-селекторе:

myList.sortedWith(
    compareBy(collator) { "${it.lastName} ${it.firstName}".toLowerCase() }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...