Java对含有null的集合进行排序

1.原始comparator

java 复制代码
public static List<ReportVehicleVo> sortByBuildingPhaseAndFdeName(List<ReportVehicleVo> list){
        list.sort(new Comparator<ReportVehicleVo>() {
            @Override
            public int compare(ReportVehicleVo o1, ReportVehicleVo o2) {
                if (StringUtils.isBlank(o1.getVeBuildingPhase())){
                    return -1;
                }
                if (StringUtils.isBlank(o2.getVeBuildingPhase())){
                    return 1;
                }
                if (o1.getVeBuildingPhase().compareTo(o2.getVeBuildingPhase()) > 0){
                    return 1;
                }else if (o1.getVeBuildingPhase().compareTo(o2.getVeBuildingPhase()) < 0){
                    return -1;
                }else {
                    if (StringUtils.isBlank(o1.getFdeName())){
                        return -1;
                    }
                    if (StringUtils.isBlank(o2.getFdeName())){
                        return 1;
                    }
                    if (o1.getFdeName().compareTo(o2.getFdeName()) > 0){
                        return 1;
                    }else {
                        return -1;
                    }
                }
            }
        });
        return list;
    }

原始方法判空后再排序

2.优雅方式

java 复制代码
List<String> testingPlaceList = new ArrayList<>();
testingPlaceList.sort(Comparator.nullsFirst(Comparator.naturalOrder()));

下边一行代码执行完就排好序了,并且nullsFirst会把null值排到前边,如果你想排到后边就换成nullsLast,另外naturalOrder是正序,如果你想倒序就换成reverseOrder

相关推荐
小刘不想改BUG9 分钟前
LeetCode 138.随机链表的复制 Java
java·leetcode·链表·hash table
NGC_661110 分钟前
Java 死锁预防:从原理到实战,彻底规避并发陷阱
java·开发语言
卓怡学长18 分钟前
m277基于java web的计算机office课程平台设计与实现
java·spring·tomcat·maven·hibernate
季明洵22 分钟前
Java简介与安装
java·开发语言
沉鱼.4425 分钟前
枚举问题集
java·数据结构·算法
林夕sama29 分钟前
多线程基础(五)
java·开发语言·前端
Zzxy33 分钟前
HikariCP连接池
java·数据库
罗超驿38 分钟前
Java数据结构_栈_算法题
java·数据结构·
希望永不加班43 分钟前
SpringBoot 主启动类解释:@SpringBootApplication 到底做了什么
java·spring boot·后端·spring
蝎子莱莱爱打怪1 小时前
别再裸用 Claude Code 了!32 个亲测Skills + 8 个 MCP,开发效率直接拉满!
java·后端·claude