一、需求背景
现在有一组数据,需要先找数量从多到少排序,如果数量相同,那么按照名称首字母A-Z排序
二、实现排序
实现步骤如下:
List<WarningListVo> list = new ArrayList<>();
//排序规则:预警数量从大到小,如果预警数相同,按照名称首字母排序
//使用Collator进行本地化不敏感的字符串比较
Collator collator = Collator.getInstance(Locale.CHINA);
//设置为按首字母排序
collator.setStrength(Collator.PRIMARY);
list =list.stream()
.sorted(Comparator.comparing(WarningListVo::getWarningNum)
.reversed()
.thenComparing(item -> collator.getCollationKey(item.getDistName())))
.collect(Collectors.toList());