文字列のリストがあり、その中には漢字が含まれているものもあります。
List<String> list = new ArrayList<String>();
list.add("安卓");
list.add("iPhone");
list.add("WindowsMobile");
list.add("苹果");
list.add("Ubuntu");
list.add("Windows7");
どうすればソートできますか?
通常の並べ替えを使用します。
Collections.sort(list);
カスタムソートが必要な場合は、独自のコンパレータを実装できます。
Collections.sort(list, new Comparator<String>() {
public int compare(String s1, String s2) {
// some own compare method...
}
});
独自のコンパレータを使用する Collections.sort は、間違いなく出発点です。コンパレータを作成するには、クラスを実装Comparator
し、その比較メソッドを実装します。次に、オブジェクトをインスタンス化し、それを Collections.sort メソッドに渡します。
編集:
compare メソッド内のロジックのおおよその擬似コード:
IF s1 isChinese && s2 isEnglish
return -1
IF s2 isChinese && s1 isEnglish
return 1
IF s1 isChinese && s2 isChinese
//implement your custom way to sort stuff
IF s1 isEnglish && s2 isEnglish
//implement your custom way to sort stuff
これにより、中国語の単語が下部ではなく上部に表示されます。
より良い方法は、それを英語に翻訳し(こちらを参照)、Comparator を使用して並べ替えることです。