java中文拼英首字母、英文以及数字等混排
String o1,o2;
Comparator<Object> comparator = Collator.getInstance(java.util.Locale.CHINA);
comparator.compare(o1,o2);
如果是一些含有各种属性的对象排序
就需要重写Comparator类
UserBean
public class UserBean{
private int uid;
private String uname;
public int getUid(){
return this.uid;
}
public String getUname(){
return this.uname;
}
}
如果是按照id和名称排序:
Comparator<Object> CHINA_COMPARE= Collator.getInstance(Locale.CHINA);
Collections.sort(userList,
new Comparator<UserBean>() {
@Override
public int compare(UserBean o1, UserBean o2) {
return o1.getUid>o2.getUid?1:o1.getUid==o2.getUid?0:-1;
}
}.thenComparing((o1, o2) -> {
String name1 = o1.getUname();
String name2 = o2.getUname();
return CHINA_COMPARE.compare(jobNumber1, jobNumber2);
})
);
可以进一步简化写成:
Comparator<Object> CHINA_COMPARE= Collator.getInstance(Locale.CHINA);
userList.sort(new Comparator<UserBean>() {
@Override
public int compare(UserBean o1, UserBean o2) {
return o1.getUid>o2.getUid?1:o1.getUid==o2.getUid?0:-1;
}
}.thenComparing((o1, o2) -> {
String jobNumber1 = o1.getJobNumber();
String jobNumber2 = o2.getJobNumber();
return CHINA_COMPARE.compare(jobNumber1, jobNumber2);
}));