Java List中通过对象属性排序,可实现多条件排序

直接上代码:

java 复制代码
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * List 对象属性排序
 */

@Data
@AllArgsConstructor
class Commodity
{
    private String name;
    private Double price;
    private Integer count;
}

public class Test {
    public static void main(String[] args) {
        // 创建参数
        List<Commodity> list = Lists.newArrayList(
                new Commodity("1", 3.3, 10),
                new Commodity("2", null, 30),
                new Commodity("3", 4.4, 20),
                new Commodity("4", 6.6, null),
                new Commodity("5", 8.8, 20),
                new Commodity("6", 8.8, 20),
                new Commodity("7", 7.7, 60),
                new Commodity("8", 7.7, 60)
        );

        // 多排序条件
        List<Commodity> orderShopList = list.stream().sorted(Comparator
                // 先按数量降序(由于是降序,nullsFirst()方法会将null值放在后面)
                .comparing(Commodity::getCount, Comparator.nullsFirst(Integer::compareTo).reversed())
                // 然后按价格升序(由于是升序,nullsFirst()方法会将null值放在前面)
                .thenComparing(Commodity::getPrice, Comparator.nullsFirst(Double::compareTo))
                // 然后按名称降序(如果不设置null值排序规则,字段为null会报错)
                .thenComparing(Commodity::getName, Comparator.reverseOrder())
        ).collect(Collectors.toList());

        // 打印排序结果
        orderShopList.forEach(System.out::println);
    }
}

运行结果如下:

相关推荐
四谎真好看5 分钟前
Java 黑马程序员学习笔记(进阶篇6)
java·笔记·学习·学习笔记
星梦清河12 分钟前
宋红康 JVM 笔记 Day17|垃圾回收器
java·jvm·笔记
一枝小雨21 分钟前
【C++】list 容器操作
开发语言·c++·笔记·list·学习笔记
HMBBLOVEPDX23 分钟前
C++(继承和多态)
开发语言·c++·继承和多态
yvya_33 分钟前
JVM介绍
java·开发语言·jvm
烟雨书信41 分钟前
LINUX中Docker Swarm的介绍和使用
java·linux·docker
今天秃头了吗??1 小时前
【JAVA】网络编程
java·网络·网络编程·socket
煎饼皮皮侠1 小时前
【图解】idea中快速查找maven冲突
java·maven·intellij-idea·冲突
rockmelodies1 小时前
【PHP7内核剖析】-1.1 PHP概述
开发语言·php
科兴第一吴彦祖1 小时前
在线会议系统是一个基于Vue3 + Spring Boot的现代化在线会议管理平台,集成了视频会议、实时聊天、AI智能助手等多项先进技术。
java·vue.js·人工智能·spring boot·推荐算法