天天看點

中文排序要注意的問題

  遇到了中文排序問題,比如想用拼音排序,

String[] strs = {"張三(Z)","李四(L)","王五(W)"};
    
//排序,預設是升序
    Arrays.sort(strs);      

發現排序結果是:張三(Z)","李四(L)","王五(W),後來看了下《高品質java 151個建議》

一書,發現找到了答案,原來是每一個字元采用uft-8編碼來比較,因為張排在李的前面,

是以就有這個答案了。是以建議使用的是compareto排序,如下:

String[] strs = {"張三(Z)","李四(L)","王五(W)"};
    //定義一個中文排序器
    Comparator c = Collator.getInstance(Locale.CHINA);
    //升序排列
    Arrays.sort(strs,c);