如何按本地字符串对字母敏感排序?

时间:2018-09-11 20:15:19

标签: kotlin functional-programming

假设我有

这样的单词列表
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 :(得分:3)

来自here

尝试这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="15dp"
    android:text="Nama"
    android:textSize="20sp"
    android:textStyle="bold"
    android:id="@+id/nm2" />

<TextView
    android:id="@+id/kmn2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/nm2"
    android:layout_marginLeft="15dp"
    android:layout_marginTop="10dp"
    android:text="Komentar"
    android:textSize="20sp"
    android:textStyle="bold" />
</RelativeLayout>

更新:

使您的对象实现可比性:

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

尝试一下。