方式1 order by 即可
方式2
private List<ProjectInitiaDto> sortByInitia(List<ProjectInitiaDto> lis) {
List<ProjectInitiaDto> records = lis;
List<ProjectInitiaDto> chinese = new ArrayList<>();
List<ProjectInitiaDto> nochinese = new ArrayList<>();
Stream<ProjectInitiaDto> projectInitiaPoStream = records.stream().map(item -> {
if (String.valueOf(item.getInitiaNum().charAt(0)).matches("[\\u4e00-\\u9fa5]")) {
//如果开头是汉字
chinese.add(item);
} else {
nochinese.add(item);
}
return item;
});
Collator instance = Collator.getInstance(Locale.CHINA);
nochinese.sort((o1,o2)->instance.compare(o1.getInitiaNum(),o2.getInitiaNum()));
chinese.sort((o1,o2)->new PinyinComparator().compare(o1.getInitiaNum(),o2.getInitiaNum()));
nochinese.addAll(chinese);
return nochinese;
}
List<ProjectInitiaDto> projectInitiaDtos = sortByInitia(dtoList);
if (!CollectionUtils.isEmpty(projectInitiaDtos)){
page2.setRecords(projectInitiaDtos);
}else {
page2.setRecords(dtoList);
}