java中的Collections.sort(list, Collator.getInstance(java.util.Locale.CHINA))是什么意思

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的排序效果为:

[安倍, 钛媒体, 网易汽车, 昕薇网, 新民汽车网, 瘾科技, 中国, 中心]

猜你喜欢

转载自blog.csdn.net/weixin_39793752/article/details/80420930