1、根据对象中的英文名进行排序,如果有中文插入则中文排到最后,中文不做排序
@Test
public void sortTest(){
List<User> list = new ArrayList<>();
list.add(new User(14,"zhagnsan"));
list.add(new User(14,"lisi"));
list.add(new User(14,"wangwu"));
list.add(new User(14,"zhaoliu"));
list.add(new User(14,"第三方"));
list.add(new User(14,"阿斯蒂芬"));
list.add(new User(14,"liuba"));
list.add(new User(14,"1324"));
System.out.println("排序前:"+list);
Collections.sort(list,new Comparator<User>(){
public int compare(User o1, User o2) {
String s1=o1.getName();
String s2=o2.getName();
//该排序为正序排序,如果倒序排序则将compare中的s2和s1互换位置
return Collator.getInstance(Locale.UK).compare(s1, s2);
}
});
System.out.println("排序后:"+list);
}
2、对象中的英文名进行排序,如果对象中名称有英文依然按照字母进行排序
@Test
public void nameSortTest2(){
List<User> list = new ArrayList<>();
list.add(new User(1,"张三"));
list.add(new User(2,"李四"));
list.add(new User(3,"王五"));
list.add(new User(4,"apo"));
System.out.println("排序前:"+list);
//按照名称排序
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
//排序规则:按照汉字拼音首字母排序
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
//该排序为正序排序,如果倒序排序则将compare中的01和02互换位置
return com.compare(o1.getName(), o2.getName());
}
});
System.out.println("排序后:"+list);
}
3、根据list字符串进行排序,中英文皆可使用,包括中英文混存
@Test
public void nameSortTest(){
List<String> list = new ArrayList();
list.add("张三");
list.add("王五");
list.add("赵六");
list.add("ao");
list.add("李四");
System.out.println(list);
Collator instance = Collator.getInstance(Locale.CHINA);
//正序排序
Collections.sort(list,instance);
//如需倒序则对排序过的集合进行翻转
Collections.reverse(list);
System.out.println(list);
}