Comparator cmp = Collator.getInstance(Locale.CHINA);
String[] arr = {"張三", "李四", "王五", "劉六"};
Arrays.sort(arr, cmp); // 按拼音/筆畫排序
實作 Comparator<ComparableBean>,內部使用 RuleBasedCollator:
public class ComparableBeanComparator implements Comparator<ComparableBean> {
private final RuleBasedCollator collator = (RuleBasedCollator) Collator.getInstance(Locale.CHINA);
public int compare(ComparableBean o1, ComparableBean o2) {
CollationKey k1 = collator.getCollationKey(o1.getName());
CollationKey k2 = collator.getCollationKey(o2.getName());
return k1.compareTo(k2); // 或 k2.compareTo(k1) 降序
}
}
Collator:區域敏感比較器,支援多語言。CollationKey:預計算排序鍵,大量比較時效能更佳。RuleBasedCollator:可自定義排序規則(如忽略大小寫、聲調)。ComparableBean[] beans = {
new ComparableBean("一切從實際出發"),
new ComparableBean("立於不敗之地"),
// ...
};
Arrays.sort(beans, new ComparableBeanComparator());