因為中文字的Unicode順序並非以中文筆劃做排序,

所以純粹使用Arrays.sort()排序出來的結果就可能不如預期,

可以使用Collator.getInstance(Locale.TAIWAN)指定所要排序的文字,

這裡指定為繁體中文。

 

以下以實例來說明。

 

import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;

public class ChineseTest {

public static void main(String[] args) {

String[] books = new String[] {"白雪公主","灰故娘","水滸傳"};

//當比較規則無特定時,可直接使用下列程式碼即可
//Collator collator = Collator.getInstance(Locale.TAIWAN);

Comparator comparator = new ChineseComparator();
Arrays.sort(books, comparator);

}

}

 

/*有特定的比較規則時,可實作Comparator,依需求覆寫compare內容
* 回傳值 <0表示obj1小於obj2 =0表示obj1等於obj2 >0表示obj1大於obj2
*/

class ChineseComparator implements Comparator<Object> {

@Override
public int compare(Object obj1, Object obj2) {

Collator collator = Collator.getInstance(Locale.TAIWAN);

return collator.compare(obj1.toString(), obj2.toString());

}

}

arrow
arrow
    全站熱搜

    Natasha 發表在 痞客邦 留言(0) 人氣()