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

直接上代码:

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);}
}

 运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26878.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 事件函数的执行顺序

脚本生命周期流程图 Awake&#xff1a;在所有 Start 函数之前&#xff0c;以及 prefab 实例化之后调用。&#xff08;如果一个 GameObject 在启动期间处于非活动状态&#xff0c;则在激活之前不会调用它。&#xff09;OnEnable&#xff08;仅在对象处于活动状态时调用&#xff…

领略大数据分析的魅力:迈向FineBI的世界

版权声明&#xff1a;本文为 小异常 原创文章&#xff0c;非商用自由转载-保持署名-注明出处&#xff0c;谢谢&#xff01; 本文网址&#xff1a;https://sunkuan.blog.csdn.net/article/details/131698171 文章目录 一、FineBI介绍&#xff08;6.0版本&#xff09;1、使用人群…

深入理解网络通信和TCP、IP协议-01

1、网络协议 计算机网络是什么&#xff1f; 随着计算机技术发展&#xff0c;计算机的体积和价格都在下降&#xff0c;之前计算机多用于研究机构&#xff0c;现 阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存&#xff0c;人们…

TCP/IP基础知识笔记

应用层&#xff1a;为用户提供应用功能&#xff0c;比如 HTTP、FTP、Telnet、DNS、SMTP等。 应用层是工作在操作系统中的用户态&#xff0c;传输层及以下则工作在内核态。 传输层&#xff1a;为应用层提供网络支持。 *TCP包含众多特性比如流量控制、超时重传、拥塞控制等因此可…

Java多线程下的单例模式参考

Java多线程下的单例模式参考 单例有多种的写法&#xff0c;本例是懒汉式单例的一种写法。在高并发环境下需要注意的是&#xff1a; 1.单例在并发访问并调用其相应的getInstance方法的时候也会造成创建多个实例对象&#xff0c;加锁是必要的。 2.使用synchronized是比较好的解…

【SpringBoot】SpringBoot-Admin 服务监控 + 告警通知

简单介绍 Spring Boot Actuator 是 Spring Boot 自带的一个功能模块&#xff0c; 提供了一组已经开箱即用的生产环境下常用的特性和服务&#xff0c;比如应用程序的健康检查、信息暴露、度量收集、日志记录等。 在实际项目中&#xff0c;Actuator 可以帮助我们快速了解应用程序…

使用dhtmlx-gantt甘特图插件定制预约表【实战】

示例传送门 定制预约表展示 一、安装 npm i dhtmlx-gantt二、配置解释与汇总 //自定义表头列 gantt.config.columns = [{name: "

想学会ai绘画软件生成?告诉你ai绘画图片生成有什么软件

小铭和晓虹是两位对艺术和创造有浓厚兴趣的大学生。他们一直梦想能够创作出独特而令人惊叹的绘画作品。然而&#xff0c;他们也意识到绘画是一项需要长时间学习和实践的技能。幸运的是&#xff0c;他们在寻找ai绘画图片生成有什么软件的时候&#xff0c;认识到了很多新的软件&a…

SpringBoot 项目使用 Redis 对用户IP进行接口限流

本文主要参考了该篇文章&#xff1a;https://www.zhihu.com/question/586213782/answer/3038040317?utm_id0 文章目录 一、思路1.1 固定时间段&#xff08;旧思路&#xff09;1.1.1 思路描述1.1.2 思路缺陷 1.2 滑动窗口&#xff08;新思路&#xff09;1.2.1 思路描述1.2.2 Re…

2023年Java最新面试题

由【后端面试题宝典】提供 和 equals 的区别是什么&#xff1f; 对于基本类型&#xff0c;比较的是值&#xff1b;对于引用类型&#xff0c;比较的是地址&#xff1b;equals不能用于基本类型的比较&#xff1b;如果没有重写equals&#xff0c;equals就相当于&#xff1b;如果重…

ES6基础语法

目录 解构 数组解构 对象解构 基本数据解构 对象 对象简写 箭头函数 扩展运算符 函数参数解构 对象API拓展 Object.is() Object.assign() Object.getPrototypeOf() Object.setPrototypeOf() Object.keys() Object.values() Object.entries() Object.fromEntries(…

学习PostgreSQL的优势

学习 PostgreSQL 可以为您打开许多就业机会。 PostgreSQL 是一种强大的关系型数据库管理系统&#xff0c;被广泛用于企业和组织中的数据管理和应用程序开发。 以下是一些学习 PostgreSQL 可能帮助您找到的工作领域&#xff1a; **1.数据库管理员&#xff1a;**作为 PostgreSQ…