java对于汉字的首字母排序,遇到生僻字时,不要使用Collator.getInstance(java.util.Locale.CHINESE),而要用com.ibm.icu.util.ULocale

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

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

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Collator.getInstance是一个静态工厂方法,用于获取适当的Collator对象来执行区分语言环境的String比较。\[1\]在引用\[2\]中的示例代码中,通过Collator.getInstance()获取了默认的Collator对象,并使用compare方法比较了两个汉字的大小。在引用\[3\]中的示例代码中,通过Collator.getInstance(java.util.Locale.CHINA)获取了中国语言环境的Collator对象,并使用该对象对列表进行排序。 #### 引用[.reference_title] - *1* [java 中文排序。](https://blog.csdn.net/laukaka/article/details/8084958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Collator类 比较符串(汉字大小)](https://blog.csdn.net/benxiaohai888/article/details/76861986)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [java中的Collections.sort(list, Collator.getInstance(java.util.Locale.CHINA))是什么意思](https://blog.csdn.net/weixin_39793752/article/details/80420930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值