使用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);