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

Предположим, у меня есть список слов, таких как

a, b, c, ą, ć, z, ż

Я хочу отсортировать по польскому языку, например:

a, ą, b, c, ć, z, ż

Возможно ли достичь?

ОБНОВЛЕНИЕ:

Предположим, мне нужно отсортировать список по двум параметрам объекта, а также с помощью сортировщика.Для одного свойства я могу использовать:

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

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

Как добавить к этому также сортировку по firstName?(например, если будет два одинаковых lastName, тогда сортируйте их по firstName)

1 Ответ

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

С здесь

Попробуйте что-то вроде этого:

val list = arrayListOf("a", "b", "c", "ą", "ć", "z", "ż")
val coll = Collator.getInstance(Locale("pl","PL"))
coll.strength = Collator.PRIMARY
Collections.sort(list, coll)
println(list)

Обновление:

Сделайте ваш объект реализуемым Comparable:

override fun compareTo(other: YourObject): Int {
    val coll = Collator.getInstance(Locale("pl","PL"))
    coll.strength = Collator.PRIMARY
    val lastNameCompareValue =  coll.compare(lastName?.toLowerCase(Locale("pl","PL")),other.lastName?.toLowerCase(Locale("pl","PL")))
    if (lastNameCompareValue != 0) {
        return lastNameCompareValue
    }
    val firstNameCompareValue =  coll.compare(firstName?.toLowerCase(Locale("pl","PL")),other.firstName?.toLowerCase(Locale("pl","PL")))
    return firstNameCompareValue
}

Попробуйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...