1.對于數組的排序方法如下:
String[] names = {"王林", "楊寶", "李鎮", "劉迪", "劉波"};
Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE));//升序;
System.out.println(Arrays.toString(names));
2.對于漢字的排序:可以嘗試使用ICU4J會得到更好的結果,特别是姓為某些生僻字的時候,
用com.ibm.icu.text.Collator替換java.text.Collator,用com.ibm.icu.util.ULocale替換java.util.Locale
3.對于枚舉類型的enum1.compareTo(enum2)是按照枚舉類型值在定義時的先後順序比較的,越後面的越大,
而不是按照值的字母先後順序比較的。
比如:List<String> list1 = new ArrayList<String>();
list1.add("網易汽車");
list1.add("新民汽車網");
list1.add("钛媒體");
list1.add("瘾科技");
list1.add("昕薇網");
list1.add("安倍");
list1.add("中國");
list1.add("中心");
System.out.println(list1.toString());
// Comparator<Object> comparator = Collator.getInstance(java.util.Locale.CHINESE);
com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE);
Collections.sort(list1,
com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE));
// Collections.sort(list1, new Comparator<String>() {
// @Override
// public int compare(String o1, String o2) {
// return Collator.getInstance(java.util.Locale.CHINA).compare(o1, o2);
// }
// });
System.out.println(list1.toString());
漢子按照中文首字母排序:
用普通的java.util.Locale.CHINESE排序的效果為:
[安倍, 網易汽車, 新民汽車網, 中國, 中心, 昕薇網, 钛媒體, 瘾科技]
用icu的排序效果為:
[安倍, 钛媒體, 網易汽車, 昕薇網, 新民汽車網, 瘾科技, 中國, 中心]