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

相关推荐
默 语9 小时前
RAG实战:用Java+向量数据库打造智能问答系统
java·开发语言·数据库
醒过来摸鱼9 小时前
Java Compiler API使用
java·开发语言·python
dazhong20129 小时前
Mybatis 敏感数据加解密插件完整实现方案
java·数据库·mybatis
TDengine (老段)9 小时前
TDengine 在智能制造领域的应用实践
java·大数据·数据库·制造·时序数据库·tdengine·涛思数据
Coder_Boy_9 小时前
基于 MQTT 的单片机与 Java 业务端双向通信全流程
java·单片机·嵌入式硬件
Asurplus9 小时前
Centos7安装Maven环境
java·centos·maven·apache·yum
想学后端的前端工程师10 小时前
【Spring Boot微服务开发实战:从入门到企业级应用】
java·开发语言·python
徐老总10 小时前
手机号脱敏处理(Python/Scala 双版本实现)
java
夏末47210 小时前
面试必问!多线程操作集合避坑指南:用synchronized搞定线程安全
java
CC.GG10 小时前
【C++】STL----封装红黑树实现map和set
android·java·c++