java 中文排序奇怪的问题如何解决

码上中国博客 发布于 10/08 11:46
阅读 523
收藏 0

OSC年度开源问卷新鲜出炉,你的回答对我们很重要,参与开源可以从这份问卷开始>>>

使用JAVA的排序功能对一个list的字符串进行排序,发现排序出来的结果很奇怪,没有按照想要的排序规则出来:

        List<String> tempList = Lists.newArrayList();
        tempList.add("科雷嘉");
        tempList.add("科雷缤");
        tempList.add("科雷傲");
        tempList.add("科雷缤");
        tempList.add("科雷傲");
        tempList.add("科雷嘉");
        Collections.sort(tempList, Comparator.comparing(e -> e));
        System.out.println("=============================" + tempList);

这段代码排序出来的结果为:

=============================[科雷傲, 科雷傲, 科雷嘉, 科雷嘉, 科雷缤, 科雷缤]

而不是我想要的

=============================[科雷傲, 科雷傲, 科雷缤, 科雷缤, 科雷嘉, 科雷嘉]

请问不转换为拼音的前提下,如何才能做到按照拼音进行排序?

加载中
0
码上中国博客
码上中国博客

自己已经解决了:

使用如下方式排序

Collections.sort(maintainOrderSpecModels,
                (o1, o2) -> Collator.getInstance(ULocale.SIMPLIFIED_CHINESE).compare(o1,o2));
       

引入依赖:


        <dependency>
            <groupId>com.ibm.icu</groupId>
            <artifactId>icu4j</artifactId>
            <version>${icu.version}</version>
        </dependency>

 

北风刮的不认真了
北风刮的不认真了
再点一个,变成正数
大冶吴彦祖
大冶吴彦祖
给你点赞
0
terrence_tian
terrence_tian

gb2312才是按照拼音来排序的,Unicode没有这个规定。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部