Java按照GBK拼音顺序对汉字排序

news2024/10/24 12:29:49

最近遇到一个需求,需要对一个列表数据的特定字段,比如姓名,初看应该不难,但是有什么比较快速便捷的方法,因为是Java的项目,所以想到比较火的工具框架Hutool,在Hutool官网 找到一个比较器类PinyinComparator

在这里插入图片描述

实验环境准备

  • JDK 1.8
  • SpringBoot 3.3.0
  • Maven 3.3.9
  • Hutool 5.7.1
  • 开发工具
    • IntelliJ IDEA
    • smartGit

代码实现

基于jdk8的集合列表遍历,将hutool的PinyinComparator传入即可

@Test
public void testComparator() {
	List<RecordDto> list = Lists.newArrayList();
	RecordDto record01= new RecordDto();
	record01.setStuName("风清扬");

	RecordDto record02= new RecordDto();
	record02.setStuName("小明");

	RecordDto record03= new RecordDto();
	record03.setStuName("杰克");

	list.add(record01);
	list.add(record02);
	list.add(record03);

	list = list.stream()
			.sorted(Comparator.comparing(RecordDto ::getSName, new PinyinComparator()))
			.collect(Collectors.toList());

	list.stream().forEach(e -> {
		System.out.println(e.getSName());
	});
}

在这里插入图片描述

源码实现

PinyinComparator也是基于Comparator接口

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package cn.hutool.core.comparator;

import java.io.Serializable;
import java.text.Collator;
import java.util.Comparator;
import java.util.Locale;

public class PinyinComparator implements Comparator<String>, Serializable {
    private static final long serialVersionUID = 1L;
    final Collator collator;

    public PinyinComparator() {
        this.collator = Collator.getInstance(Locale.CHINESE);
    }

    public int compare(String o1, String o2) {
        return this.collator.compare(o1, o2);
    }
}

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

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

相关文章

【启明智显产品分享】Model3工业级HMI芯片详解系列专题(三):安全、稳定、高防护

芯片作为电子设备的核心部件&#xff0c;&#xff0c;根据不同的应用领域被分为不同等级。工业级芯片适用于工业自动化、控制系统和仪器仪表等领域&#xff0c;对芯片的安全、稳定、防护能力等等有着较高的要求。这些芯片往往需要具备更宽的工业温度范围&#xff0c;能够在更恶…

第4章 工程经济评价指标 作业

第4章 工程经济评价指标 作业 一单选题&#xff08;共27题&#xff0c;100分&#xff09; (单选题)利息备付率是指( )与应付利息费用的比值。 A. 息税前利润 B. 利润总额 C. 净利润 D. 营业收入 正确答案: A:息税前利润; (单选题)当净现值( )0时,该项目不可行。 A. < B. …

摊位纠纷演变肢体冲突,倒赔了500:残疾夫妇与摊主谁之过?

在一个小商贩密集的街区&#xff0c;一起由摊位纠纷引发的肢体冲突事件在当地社区和网络上引起了热议。涉事双方为一名摊主和一对残疾夫妇&#xff0c;他们的争执源自对一个摊位的使用权。本是口头上的争吵&#xff0c;却由于双方情绪激动&#xff0c;迅速升级为肢体冲突&#…

windy开发笔记

https://www.windy.com/ 基于windyApi 开发自己的气象项目 文档: widnyAPI 主要属性https://api.windy.com/map-forecast/docswidny 参数 以及数据https://api.windy.com/map-forecast/examples/parameters 属性值 https://api.windy.com/point-forecast/docs#parameterssto…

英国牛津大学基因组学方向博士后职位

英国牛津大学基因组学方向博士后职位 牛津大学&#xff08;University of Oxford&#xff09;&#xff0c;简称“牛津”&#xff08;Oxford&#xff09;&#xff0c;位于英国牛津&#xff0c;是一所公立研究型大学&#xff0c;采用传统学院制。是罗素大学集团成员&#xff0c;被…

[Shell编程学习路线]——for循环应用技巧 语法和案例

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f6e0;️Shell编程专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月20日16点21分 &#x1f004;️文章质量&#xff1a;96分 目录 ————前言———— for 循环语句 基本结构 图示原理…

医疗器械3D全景展会在线漫游创造数字化时代的展览新篇章

在数字化浪潮的引领下&#xff0c;VR虚拟网上展会正逐渐成为企业展示品牌实力、吸引潜在客户的首选平台。我们与广交会携手走过三年多的时光&#xff0c;凭借优质的服务和丰富的经验&#xff0c;赢得了客户的广泛赞誉。 面对传统展会活动繁多、企业运营繁忙的挑战&#xff0c;许…

ROS程序设计系列 - 3.ROS Tools

ROS程序设计系列 - 3.ROS Tools 1. 源由2. Trasformation System2.1 设计目标2.2 已知局限2.3 Transform Tree2.4 Tools2.5 RViz Plugin2.6 DEMO - Transform Listener 3. rqt User Interface3.1 rqt plugins3.2 rqt_image_view3.3 rqt_multiplot3.4 rqt_graph3.5 rqt_console3…

「Python-docx 专栏」docx 设置页面边距、页眉页脚高度

本文目录 前言一、docx 页面边距在哪里二、对 <w:pgMar> 的详细说明1、上边距的说明2、右边距的说明3、下边距的说明4、左边距的说明5、页眉高度的说明6、页脚高度的说明三、设置 docx 页边距、页眉页脚高度1、完整代码2、代码执行效果图四、补充一些内容1、页面边距的两…

【廉颇老矣,尚能饭否】传统的数据仓库是否还能发挥作用?

引言&#xff1a;随着数字化转型的深入和大数据技术的发展&#xff0c;大数据平台、数据中台和和数据湖技术不断涌现&#xff0c;给人感觉传统的数据仓库技术已经过时&#xff0c;廉颇老矣&#xff0c;不能应对新的挑战&#xff0c;在数字化转型中&#xff0c;不能发挥重要作用…

AMD vs NVIDIA:渲染领域的显卡之争

在数字创意与设计的世界里&#xff0c;显卡作为图形处理的核心&#xff0c;其性能与兼容性直接关系到创作者的工作效率与作品质量。AMD与NVIDIA&#xff0c;作为两大显卡巨头&#xff0c;各自在渲染领域拥有独特的技术与优势。那么&#xff0c;针对渲染而言&#xff0c;哪种显卡…

土地财政新变化——从最近的“退出政府融资平台”说起

我国城投领域最早的名单可以追溯到2010年&#xff08;原&#xff09;银监会建立的地方投融资平台名单。2010年开始&#xff0c;监管部门着手对地方城投平台进行整顿和规范&#xff0c;地方城投平台融资迎来第一个缩紧周期。根据《国务院关于加强地方政府融资平台工作管理有关问…

iptables(2)安装及规则查询

安装iptables 我是用的系统是debian 12,目前没有安装iptables。 防火墙已经安装完成了 iptables 的配置语法 iptables (选项) (参数) # 通用匹配:源地址目标地址的匹配 -p:指定要匹配的数据包协议类型 -s, --source [!] address[/mask] :把指定的一个/一组地址作为源地…

神经网络学习-池化层

池化层方法 池化一般是用来对卷积层进行降维 空洞卷积&#xff0c;通过在卷积核的元素之间插入“空洞”&#xff08;即零&#xff09;&#xff0c;可以在不增加参数量和计算量的情况下扩大卷积核的感受野。这对于捕捉图像中的多尺度信息特别有用。 池化的默认步长是池化核的大…

【网络安全的神秘世界】文件上传、JBOSS、Struct漏洞复现

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 攻防环境搭建及漏洞原理学习 Kali安装docker 安装教程 PHP攻防环境搭建 中间件介绍 介于应用系统和系统软件之间的软件。…

设计软件有哪些?景观插件篇,渲染100邀请码1a12

建立大型景观也是设计师常用的设计方法&#xff0c;我们介绍一些景观插件。 1、AutoGrass AutoGrass是用于快速生成逼真的草地和植被场景的3ds Max插件&#xff0c;它提供了大量的草地预设和工具&#xff0c;使用户能够轻松地创建各种各样的草地效果&#xff0c;包括草地、草…

程序员必须知道!Serverless超强打造国产BAAS

在当今快节奏的软件开发领域&#xff0c;懒人开发者和独立开发者们一直在寻找能够简化开发流程、提高效率的利器。而今&#xff0c;MemFire Cloud以其强大的功能和简便的操作&#xff0c;成为了解决方案中的明星。无需搭建服务&#xff0c;无需开发API接口&#xff0c;你甚至可…

开源技术:在线教育系统源码及教育培训APP开发指南

本篇文章&#xff0c;小编将探讨如何利用开源技术开发在线教育系统及教育培训APP&#xff0c;旨在为有志于此的开发者提供全面的指导和实践建议。 一、在线教育系统的基本构架 1.1架构设计 包括前端、后端和数据库三个主要部分。 1.2前端技术 在前端开发中&#xff0c;HTML…

【论文速读】| 超越随机输入:一种基于机器学习的新型硬件模糊测试方法

本次分享论文&#xff1a;Beyond Random Inputs: A Novel ML-Based Hardware Fuzzing 基本信息 原文作者&#xff1a;Mohamadreza Rostami, Marco Chilese, Shaza Zeitouni, Rahul Kande, Jeyavijayan Rajendran, Ahmad-Reza Sadeghi 作者单位&#xff1a;Technical Univers…

NXP实战笔记(十四):32K3xx基于RTD-SDK在S32DS实现HSE的安装。

目录 1、概述 1.1、什么是HSE&#xff1f; 1.2、如何实现HSE的OTA功能 1.3、S32K3放置HSE的地址 2、通过调试器安装HSE 3、通过IVT方式安装HSE 4、坑点慎重踩 4.1、优化等级 4.2、Flash放RAM 4.3、C40_Ip配置更改 4.4、程序烧录 5、测试结果 6、代码链接 1、概述 首…