JDK8的lambda方式List多字段排序List.stream().sorted()

JDK8的lambda方式List多字段排序List.stream().sorted()

多字段排序

List<HumanDetailDownloadVO> collect = dataList.stream().sorted(// 日期 倒序  Comparator.comparing(HumanDetailDownloadVO::getDate_str, Comparator.reverseOrder())// 仓id 倒序 .thenComparing(HumanDetailDownloadVO::getSite_code, Comparator.reverseOrder())// 用户名升序  自定义比较器  拼音排序.thenComparing(HumanDetailDownloadVO::getUser_name, new ChineseComparator())// 大类code 升序.thenComparing(HumanDetailDownloadVO::getPosition_code, Comparator.naturalOrder())// 小类code 升序.thenComparing(HumanDetailDownloadVO::getTask_code, Comparator.naturalOrder())).collect(Collectors.toList());

拼音排序:

引入jar包:

<!--        汉字拼音排序--><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version></dependency>

自定义比较器:

package XXXXXXXXXXXXXXXX;import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class ChineseComparator implements Comparator<String> {HanyuPinyinOutputFormat pinyinOutputFormat = new HanyuPinyinOutputFormat();@Overridepublic int compare(String o1, String o2) {String pinyin1 = null;String pinyin2 = null;try {pinyin1 = PinyinHelper.toHanYuPinyinString(o1, pinyinOutputFormat, " ", true);pinyin2 = PinyinHelper.toHanYuPinyinString(o2, pinyinOutputFormat, " ", true);System.out.println("pinyin1=" + pinyin1 + ", pinyin2=" + pinyin2);} catch (Exception e) {e.printStackTrace();}return pinyin1.compareTo(pinyin2);}}

结束。

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

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

相关文章

【Java项目实战】牛客网论坛项目1 - Spring入门与初识SpringMVC

目录 Spring 入门SpringInitializrApplicationContextAwareControllerDAODAO 名称索引ServiceConfig自动装配 初识 SpringMVCHttp 请求GETPOSTHTML 渲染响应 JSON 数据 Spring 入门 SpringInitializr IDEA 专业版自带的功能&#xff0c;也可以直接搜索对应网站&#xff0c;通…

数据库概念

定义&#xff1a; 数据库&#xff08;Database 简称DB&#xff09;是持久存储有组织/可共享数据/的容器 数据库管理系统(MySQL、Oracle、DB2)是操作/和管理数据库/的软件 分类&#xff1a; 关系(型)数据库 (MySQL、Oracle、SQL Server、SQLite、DB2) 非关系(型)数据库 (Redis…

华为云 存在不支持迁移的外键解决方法

DRS 检测出源端存在不支持的外键引用操作 MySQL、GaussDB(for MySQL)为源的全量增量或增量迁移、同步场景&#xff0c;以及MySQL、GaussDB(for MySQL)为源灾备场景 表1 源端存在不支持的外键引用操作 预检查项 源端存在不支持的外键引用操作。 描述 同步对象中存在包含CASC…

git如何查看和修改用户名和邮箱

一、查看Git全局配置的用户名和邮箱 在Git中可以通过以下命令查看你的全局配置&#xff1a; git config --global user.namegit config --global user.email其中&#xff0c;git config是Git配置命令&#xff0c;--global是全局配置选项&#xff0c;user.name和user.email是我…

Unity物体查找方式

参考资料 cUnity中使用GameObject.Find、Transform.Find查找GameObject_思月行云的博客-CSDN博客 GameObject.Find 通过名字或路径查找游戏对象。 GameObject.Find("GameObject"); GameObject.Find("GameObject/ChildGameObject); 使用规范: 1.无法查找隐藏…

配置Jedis连接池

一、概述 Jedis本身是线程不安全的&#xff0c;并且频繁的创建和销毁连接会有性能损耗&#xff0c;因此推荐使用Jedis连接池代替Jedis的直连方式。 二、创建连接池 public class JedisConnectionFactory {private static final JedisPool jedisPool;static {//配置连接池Jedi…

Centos 7 通过Docker部署OnlyOffice

前言&#xff1a; 在本文中&#xff0c;我们将详细介绍如何使用 Docker 部署功能强大的协作办公套件 OnlyOffice。通过 Docker&#xff0c;您可以轻松构建、部署和管理 OnlyOffice&#xff0c;从而提高团队协作和企业办公的效率。 一、安装Docker 1、向系统添加Docker CE软件仓…

windows下运行springboot的jar包,修改替换class文件,修改配置文件application,打包

在windows下跑springboot的jar包&#xff0c;经常会用到一些命令行和操作。 1、修改配置文件&#xff08;以application.yml为例&#xff09; #提取文件 jar xvf mqtt-10.1.0.jar BOOT-INF/classes/application.yml#将文件装回jar包 jar uvf mqtt-10.1.0.jar BOOT-INF/classe…

Qt简易闹钟

配置文件 QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compi…

Json“牵手”当当网商品详情数据方法,当当商品详情API接口,当当API申请指南

当当网是知名的综合性网上购物商城&#xff0c;由国内著名出版机构科文公司、美国老虎基金、美国IDG集团、卢森堡剑桥集团、亚洲创业投资基金&#xff08;原名软银中国创业基金&#xff09;共同投资成立1。 当当网从1999年11月正式开通&#xff0c;已从早期的网上卖书拓展到网…

【JAVA】Object类与抽象类

作者主页&#xff1a;paper jie_的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和…

Linux安装nginx教程

目录 一、Nginx下载 二、安装步骤 1、在 /docker目录下新建 nginx 文件夹 2、将解压包移动到nginx目录下并解压到nginx目录 3、进入 nginx目录&#xff0c;找到 configure 4、运行 configure&#xff0c;命令 5、安装 6、查看根目录 7、进入Nginx目录下的conf文件夹…

i8080/TTL/LVDS/MIPI接口的差别

EYA-DISPLAY i8080、TTL、LVDS和MIPI都是用于数据传输的接口协议&#xff0c;但它们在传输数据类型和使用场景上存在一些差异。 i8080接口是一种并行数据接口&#xff0c;通常用于连接CPU和慢速外设。它最初被设计用于IBM的PC和AT计算机&#xff0c;现已被广泛用于各种计算机和…

VSCODE CMAKE C++ 工程调试, C++不以科学计数法输出并控制小数位数

1. VSCODE调试CMAKE工程配置1.1 修改CMakeLists.txt文件1.2. 程序中1.3. launch.json配置1.4 开始调试1.5 注意 2. C设置输出浮点数且保留位数固定 1. VSCODE调试CMAKE工程配置 1.1 修改CMakeLists.txt文件 加这一句 set(CMAKE_BUILD_TYPE "Debug")1.2. 程序中 在…

python分支结构的花样玩法(二)

除了上述的基本用法&#xff0c;还可以使用更复杂的条件表达式&#xff0c;包括使用 not 和 or 来组合条件&#xff0c;以及使用 in 和 not in 来检查元素是否在&#xff08;或不在&#xff09;某个集合中。 例如&#xff1a; pythonif not condition1 or not condition2: # …

Nginx 学习(五)Tomcat 服务器

1 案例1&#xff1a;安装部署Tomcat服务器 1.1 问题 本案例要求部署Tomcat服务器&#xff0c;具体要求如下&#xff1a; 安装部署JDK基础环境安装部署Tomcat服务器创建JSP测试页面 然后客户机访问此Web服务器验证效果&#xff1a; 使用火狐浏览器访问Tomcat服务器的8080端…

Web存储

目录 什么是 HTML5 Web 存储? 方法 cookie webStorage 会话存储 sessionStorage 本地存储localStorage 什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据。 早些时候,本地存储使用的是 cookie。但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服…

下单时如何保证数据一致性?

原创 哪吒 哪吒编程 2023-09-07 08:03 发表于辽宁 收录于合集#Redis11个 &#xff08;给哪吒编程加星标&#xff0c;提高Java技能&#xff09; 大家好&#xff0c;我是哪吒。 在前几篇文章中&#xff0c;提到了Redis实现排行榜、Redis数据缓存策略&#xff0c;让我们对Redis…

Golang 获取本地 IP 地址方法

在 Golang 中&#xff0c;使用 net 包可以很方便地获取到本机IP地址。 借助 net.InterfaceAddrs 方法 简单示例代码如下&#xff1a; package mainimport ("fmt""net" )func main() {addrList, err : net.InterfaceAddrs()if err ! nil {panic(err)}for…

VSCode学习笔记一:添加代码模板

一目了然 1 简述2 设置模板3 Global Snippets file示例 1 简述 问&#xff1a;为什么要设置代码模板&#xff1f; 答&#xff1a;编程语言是有个性的&#xff0c;不同语言的演讲风格是不一样的。 旁白&#xff1a;我不懂&#xff1f;&#xff01; 问&#xff1a;为什么要设置…