java8 list 多字段排序(含中文)

java8 list 多字段含中文排序

java8 多字段排序(含中文)

关键是这一行:

 result.sort(Comparator.comparing(CityNumber::getSum, Comparator.reverseOrder()).thenComparing((o1, o2) -> Collator.getInstance(Locale.CHINA).compare(o1.getCityName(),o2.getCityName())));

实体代码如下:

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author yujiangcheng
 * @date 2021/2/27 15:17
 * @description CityNumber
 */
@Data
public class CityNumber{
    @ApiModelProperty(value = "城市")
    private String cityName;
    @ApiModelProperty(value = "合计")
    private int sum;
}

测试代码片段如下:

    @Test
    public void listTest() {
       String str = "[{\"cityName\":\"成都\",\"sum\":1},{\"cityName\":\"昆明\",\"sum\":1},{\"cityName\":\"上海\",\"sum\":3},{\"cityName\":\"沈阳\",\"sum\":1},{\"cityName\":\"长沙\",\"sum\":1},{\"cityName\":\"厦门\",\"sum\":2},{\"cityName\":\"宁波\",\"sum\":1},{\"cityName\":\"重庆\",\"sum\":1},{\"cityName\":\"武汉\",\"sum\":3},{\"cityName\":\"天津\",\"sum\":1},{\"cityName\":\"杭州\",\"sum\":2},{\"cityName\":\"苏州\",\"sum\":3},{\"cityName\":\"南昌\",\"sum\":1},{\"cityName\":\"南京\",\"sum\":1},{\"cityName\":\"北京\",\"sum\":2}]";
        List<CityNumber> result = JSON.parseArray(str, CityNumber.class);

        result.sort(Comparator.comparing(CityNumber::getSum, Comparator.reverseOrder()).thenComparing((o1, o2) -> Collator.getInstance(Locale.CHINA).compare(o1.getCityName(),o2.getCityName())));
        for (ProjectCityStage cityStage : result) {
           System.out.println(JSON.toJSONString(cityStage));
        }
    }

最终结果如下:
在这里插入图片描述


版权声明:本文为abc20072349原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。