栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 拼音排序:Collator类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 拼音排序:Collator类

项目场景:

在显示结果时,按汉字的拼音首字母排序显示。


问题描述:

直接用compare排序的结果不符合预期,应该是按Unicode编码排序的


原因分析:

Java使用Unicode编码,其中中文Unicode字符集来源于GB18030,GB18030又由GB2312发展起来。

GB2312 是一个包含  7000 多个字符的字符集,它按拼音排序,并且是连续的,之后的 GBK、GB2312 都是在此基础上扩充而来,所以要让它们完整排序难上加难了。

但如果排序对象是经常使用的汉字,使用Collator类排序完全可以满足我们的要求。


解决方案:

用Collator类重写Comparator类中的compare方法:

Collections.sort(testList, new Comparator(){
    @Override
    public int compare(String o1, String o2){
        return Collator.getInstance(Locale.CHINESE).compare(o1, o2);
    }
});

其中,Collator(整理器)类:

public abstract class Collator extends Object implements Comparator, Cloneable 

Collator(整理器)类执行区分语言环境的String比较,

对于所给的语言环境,使用静态工厂方法 getInstance 获取对应的Collator对象 

// Compare two strings in the default locale
 Collator myCollator = Collator.getInstance(Locale.CHINESE);
 if( myCollator.compare("啊", "这") < 0 )
     System.out.println("啊 比 这 小");
 else
     System.out.println("啊 比 这 大");

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号