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

相关推荐
m0_749299956 分钟前
Nginx主配置文件
java·服务器·nginx
╭╰4028 分钟前
苍穹外卖优化-续
java·spring·mybatis
金銀銅鐵14 分钟前
[Java] 枚举常量的精确类型一定是当前枚举类型吗?
java·后端
邂逅星河浪漫16 分钟前
Spring Boot常用注解-详细解析+示例
java·spring boot·后端·注解
青鱼入云18 分钟前
java面试中经常会问到的mysql问题有哪些(基础版)
java·mysql·面试
Darenm11118 分钟前
python进程,线程与协程
java·开发语言
凯哥Java37 分钟前
适应新环境:Trae编辑器下的IDEA快捷键定制
java·编辑器·intellij-idea
從南走到北40 分钟前
JAVA同城打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
java·开发语言·微信·微信小程序·小程序
落日漫游1 小时前
K8s资源管理:高效管控CPU与内存
java·开发语言·kubernetes