因為中文字的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());
}
}
留言列表