• 用来排序中文姓名或者各种语言杂糅的对象集合
  • 首先我们来设定数据,这就是待排序集合

    List<String> list = new ArrayList<String>();
    list.add("李方");
    list.add("郭云2");
    list.add("郭云3");
    list.add("赵飞");
    list.add("马路");
    list.add("xxx");
    list.add("xxy");
    list.add("432");
    
  • 然后定义一个比较器,实现比较规则

    Comparator<String> comparator = new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) { //传入两个比较对象
            //获取默认的语言环境;也可指定,全是中文的话可以传个中文的类进去
            Collator collator = Collator.getInstance();
            //返回一个比较值;CollationKey是Collator用来将String元素转换成可以彼此比较位的类
            return collator.getCollationKey(o1).compareTo( //小于返回负数,以此类推
                    collator.getCollationKey(o2));
        }
    };
    
  • 调用Collections的sort方法,传入待排序集合和比较规则

    Collections.sort(list, comparator);
    System.out.println(list); //[432, xxx, xxy, 郭云2, 郭云3, 李方, 马路, 赵飞];默认把数字、字母放在前面
    
  • 代码实例:SpringMvc02/test/TestCodeSeg