list对数字,字母,中文的排序

使用Collections.sort()方法对于英文字母排序,是先比较首字母,首字母相同比较后面字母。

使用Collections.sort()方法对于中文字符进行排序,并不是按照中文拼音的顺序,原因是Collator类执行的是区分语言环境的String比较。可调用Collator的静态方法getInstance()来获取所需语言环境的Collator对象

List<Integer> integer = Arrays.asList(2,6,6,3,1,0,6,4,3,7,3);
Collections.sort(integer);
System.out.println(integer);

List<String> strings = Arrays.asList("ce","ca","ced","ceb","ch","chw","aile");
Collections.sort(strings);
System.out.println(strings);

List<String> citys = Arrays.asList("包头", "北京", "常州", "广州", "合肥", "惠州", "郑州", "长沙", "中山", "珠海");
Collections.sort(citys, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return Collator.getInstance(Locale.CHINA).compare(o1,o2);
    }
});
System.out.println(citys);

特殊情况需要将某几个元素放在最前面,返回1不调换位置,返回-1调换位置

List<String> citys = Arrays.asList("包头", "北京", "常州", "广州", "合肥", "惠州", "郑州", "长沙", "中山", "珠海");
Collections.sort(citys, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        int compare = Collator.getInstance(Locale.CHINA).compare(o1, o2);
        if ("深圳".equals(o1))
            compare = -1;
        if ("深圳".equals(o2))
            compare = 1;
        if ("上海".equals(o1))
            compare = -1;
        if ("上海".equals(o2))
            compare = 1;
        if ("北京".equals(o1))
            compare = -1;
        if ("北京".equals(o2))
            compare = 1;
        return compare;
    }
});
System.out.println(citys);

发布了260 篇原创文章 · 获赞 57 · 访问量 19万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章