java中使用插件的中文排序

hadoop中文词频统计WordCount实验 666 阅读详情

中文排序(扩展)

​ 由于在实际开发中排序的规则多变,比如,在中文环境下需要对中文字符串按照汉语拼音的字母表顺序排列,因此,将中文字符串转换为汉语拼音就成为了排序的关键因素;

​ Pinyin4J插件可以帮助我们实现将中文字符串转换为汉语拼音,使用前需要先将插件包(pinyin4j-XX.jar)加载到项目中(buildPath),具体使用如下:

public class TestPinyin {

	public static void main(String[] args) {
		
		//将指定的字符转换为汉语拼音
		String[] str = PinyinHelper.toHanyuPinyinStringArray('中');
        //由于字符可能存在多种读音,因此返回为各种读音的字符串数组
		for (String s : str) {
			System.out.println(s);
		}
		
        String name = "张三疯";
        //下面的例子演示了如何将“张三疯”转换为zhang1san1feng1的过程
		String pinyin= "";
		for (int i = 0; i < name.length(); i++) {
			char n = name.charAt(i);
			String[] p = PinyinHelper.toHanyuPinyinStringArray(n); 
			pinyin += p[0];
		}
		System.out.println(pinyin); //zhang1san1feng1
	}
}

通过对以上代码的使用,再结合之前的sort方法和Comparator接口即可轻松实现对中文的排序,示例如下:

Student.java

public class Student {

	private String name;
	private int age;
	private double score;
	
	public Student() {
		// TODO Auto-generated constructor stub
	}
	
	public Student(String name, int age, double score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public double getScore() {
		return score;
	}
	public void setScore(double score) {
		this.score = score;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
	}
	
}

TestStudent.java

import java.util.ArrayList;
import java.util.Comparator;

import net.sourceforge.pinyin4j.PinyinHelper;

public class TestStudent2 {

	public static void main(String[] args) {
		
		ArrayList<Student> list = new ArrayList<>();
		list.add(new Student("张三丰", 19, 55));//zhang	5
		list.add(new Student("苍老师", 20, 32));//cang	1
		list.add(new Student("牛德华", 18, 48));//niu		4
		list.add(new Student("马老师", 21, 98));//ma		3
		list.add(new Student("柴老师", 23, 101));//chai	2
		//排序实现
		list.sort((a,b)->{
				//分别获取要比较的两个学生的姓名
				String name1 = a.getName();//zhang1san1feng1
				String name2 = b.getName();//cang1lao3shi1
				//声明变量存储转换之后汉语拼音
				String p1 = "";
				String p2 = "";
				//将汉字转拼音
				for (int i = 0; i < name1.length(); i++) {
					p1 += PinyinHelper.toHanyuPinyinStringArray(name1.charAt(i))[0];
				}
				for (int i = 0; i < name2.length(); i++) {
					p2 += PinyinHelper.toHanyuPinyinStringArray(name2.charAt(i))[0];
				}
				//比较
				return p1.compareTo(p2); 
		});
		
		for (Student s : list) {
			System.out.println(s);
		}
	}
}

Eclipse Class Decompiler——Java反编译插件的安装和使用 Eclipse Class Decompiler对JDK的最低要求为JDK1.5, 能反编译和debug各版本的Class文件,支持JDK8的Lambda语法,同时支持中文等非Ascii码字符集的解析,支持Eclipse 3.5及以上所有版本的Eclipse。 阅读详情

相关推荐

网络工程系统CAD图:从设计到落地的关键技能与实战指南

网络工程并不只是配置路由器和交换机,真正的核心在于将设计方案转化为可施工的物理图纸。网络工程系统CAD图正是连接逻辑设计与物理世界的桥梁,它涵盖综合布线、信息点布置、桥架路由、弱电间规划等关键内容。理解并掌握这套图纸体系,是网络工程师从基础设备调试走向项目主导者、弱电总工乃至网络架构师的重要分水岭。在园区网、数据中心、智能楼宇等真实场景中,一套规范的系统CAD图直接决定了施工质量、验收效率与后期运维的可靠性。本文从基础概念出发,拆解图纸的组成层次、绘制流程和软件工作流,并结合学习路线与就业方向,帮助初学者建

weixin_33860553的博客 391

java 排序 collections list的使用

今天使用排序主要是利用的collections进行排序,可以重在比较函数的接口就可以进行对对像的排序 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; imp

w329636271的专栏 759

深入理解梅尔刻度、梅尔滤波器组和梅尔时频谱图

读取一段音频,使用短时傅里叶变换,得到普通的时频谱图,然后绘制梅尔滤波器组,值得注意的是,librosa的梅尔滤波器组函数还带有权重归一化功能,即对一个三角形滤波器的每个权重,都除以该三角形的面积,如果不希望进行该归一化,设置参数。从公式可见,对数部分可以以自然对数为底数,也可以以10为底数,不同的底数对应不同的系数,要确定当前的系数,只需要代入(1000Hz, 1000mel)即可。其中,m是当前滤波器的序号,表征了当前的时间段,k是当前频率的序号,表征了当前正在对哪一频率的。

DEDSEC_Roger的博客 1万+

Java对中文进行排序

Java对中文进行排序

Charge8的博客 8518

STM32 无线充电接收端硬件设计:从 LC 谐振到 PWM 控制的 5 大关键电路解析

本文深入解析了基于STM32的无线充电接收端硬件设计,重点探讨了LC谐振倍压整流、INA282电流采样、IR2104S半桥驱动、超级电容保护及STM32最小系统等5大关键电路。针对超级电容的恒功率充电需求,详细介绍了PID控制算法优化及PCB设计实战要点,帮助工程师提升无线充电系统的效率和可靠性。

weixin_31774841的博客 386

基于 ESP32 的智能药盒提醒装置设计与实现

本装置基于 ESP32 实现了智能药盒的核心功能,硬件选型兼顾成本与实用性,软件设计模块化、易拓展。后续可通过 ESP32 的 WiFi 模块接入物联网平台(如阿里云、OneNet),实现远程设置提醒、服药状态反馈等功能,进一步提升智能化水平。该装置能有效解决老人忘服药问题,具有较高的实用价值与推广潜力。

weixin_42300449的博客 1045

Java 如何对中文排序

字符串的 compareTo() 方法是不能对中文排序的,下面这个例子中的中文使用 compareTo() 方法排序后得到的是乱序 List<String> stringList = Arrays.asList("李四", "阿毛", "老王", "小李", "小董"); // 按照字符串排序 stringList.sort((x,y)->x.compareTo(y) ); stringList.forEach(System.out::println); //输出结果 小李 小董 李四

一起学编程 6684

WPF用户控件间属性传递的艺术

本文详细介绍了WPF中父控件向子控件传递属性的方法。针对常见的绑定失效问题,重点讲解了使用RelativeSource绑定技术,通过指定AncestorType确保正确访问父控件属性。文章通过实例演示了从ParentModel传递属性到ChildUserControl依赖属性的完整实现过程,包括模型定义、XAML结构设计和代码实现。这种方法有效解决了数据上下文混淆问题,为WPF开发中的控件交互提供了可靠解决方案,有助于提升应用的灵活性和可维护性。

2501_90323865的博客 56

Java集合元素中中文的排序

需要说明的是,以上是在List中直接存放多个字符串后进行排序,如果是对象中某个属性是中文,将这类对象放到List中,也是能够进行排序的。

欧阳方超的专栏 2887

司法AI系统的架构设计:法律知识图谱如何辅助智能庭审?架构师亲测

简单来说,法律知识图谱是一种采用图数据结构(节点Node + 边Edge/关系Relation)来组织和表达法律领域知识的语义网络。它以。

AI 算法实战派 1088

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

算法大师! 437

Java中文排序完美新解

<span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">关键字:java,排序,中文,pinyin4j,<span style="font-family:宋体;mso-ascii-font-family:"Times New

波希米亚的专栏 7351

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

querybuilder 排序_Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)...

一、先摆需求:1、中文搜索、英文搜索、中英混搜 如:“南京东路”,“cafe 南京东路店”2、全拼搜索、首字母搜索、中文+全拼、中文+首字母混搜 如:“nanjingdonglu”,“njdl”,“南京donglu”,“南京dl”,“nang南东路”,“njd路”等等组合3、简繁搜索、特殊符号过滤搜索 如:“龍馬”可通过“龙马”搜索,再比如 L.G.F可以通过lgf搜索,café可能通...

weixin_39816024的博客 1468

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java基础五

java数组

qq_63523782的博客 146

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ElasticSearch学习笔记

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、P...

qq_34039060的博客 1015

elasticsearch java_elasticsearch入门到放弃之elasticsearch java

在java中使用elasticsearch自带的api操作elasticsearch。你可以先看下elasticsearch入门到放弃之docker搭建获取一个elasticsearch环境系列文章参考文档环境信息准备工作下面可能用到了中文分词elasticsearch-analysis-ik,由于很简单我就不单独写了简单说下流程吧docker 进入容器docker exec -it elasti...

weixin_39633276的博客 294

jQuery的dataTables插件实现中文排序

最近在写Java web。 写JSP的时候发现一个很好玩的插件dataTables。分页、过滤、排序等等手到擒来。 哎哎哎,有点点可惜的是排序这个功能不支持中文。于是网上查查找找,现在把方法整理一下,与君共享。 1 <script type="text/javascript"> 2 3 // oSort是排序类型数组, 'chinese-...

MG15075785468的博客 314

Juery解决tablesorter中文排序和字符范围

tablesorter是jQuery插件中比较优秀的一款表格排序插件,我相信大家都使用过或有所耳闻,我在这里就不过多介绍了,详细信息可以看看官方网站:http://tablesorter.com/docs/(其中的demo做得比较完整)。       在使用了tablesorter开发的几个项目中,发现了两种类型的排序存在问题,如下:       第一个问题是无法对中文字符进

受惊的牛冲向村里的牛棚 1497

Java中文排序

<br />注:本文大部分文字来自www.javatang.com。作者:Jet Mah <br />文章链接:http://www.javatang.com/archives/2007/03/05/5722110.html <br /><br />所谓中文排序就是按照汉语拼音的顺序进行排序,在Java中进行排序其实不需要 <br />自己来写算法,在java.util.Arrays类中提供的sort方法可以直接实现这个功能。 <br />示例如下: <br />package mypck; <br />i

cuseronline的专栏 1084

字符排序器详解:Java与MySQL中中文拼音排序的正确姿势

字符串排序在业务系统中看似简单,却常因底层排序规则未配置而出现中文乱序。字符排序器(Collator)是一套基于语言、地区和字符集来决定字符串先后顺序的机制,它不同于默认的Unicode码点排序,能够按拼音、笔画、重音等语言习惯排列文本。理解其原理与配置方式,对Java和MySQL等高频技术栈的工程实践尤为重要。通过合理设置Java中Collator的Locale、Strength等参数,或为MySQL选择正确的排序规则(collation),如utf8mb4_zh_0900_as_cs,可以有效解决中文按

weixin_34301132的博客 550

安装 SonarQube 常见问题及解决方案

确保系统满足最低要求:64位操作系统、至少2GB内存(生产环境建议8GB以上)、Java 11或17(注意LTS版本兼容性)。可通过以下命令检查Java版本:首先win+r 输入cmd 其次在输入以下命令SonarQube默认使用嵌入式H2数据库(仅适合测试),生产环境需配置外部数据库(sqlserver)。检查文件中数据库连接配置:以下配置中首先要到sqlserver创建数据库!数据库排序规则格外重要。

qq_43323846的博客 1515

「Java开发中文指南」IntelliJ IDEA插件安装(二)

本文将为大家介绍热门Java开发工具IntelliJ IDEA是如何插件安装的,欢迎下载工具体验!

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 2553

SQLite+FTS5+BM25构建本地智能体上下文引擎

上下文检索是本地AI智能体实现记忆与连贯交互的核心能力。其底层原理并非依赖大模型长上下文或向量数据库,而是基于结构化存储与轻量语义检索技术——SQLite提供嵌入式、零依赖的持久化基础,FTS5内置倒排索引与中文分词支持,BM25算法则以低计算开销实现高精度相关性排序。该技术路径显著降低内存占用、规避GPU与动态库依赖,特别适用于Figma插件、工控组态、Blender插件等边缘受限环境。结合MCP协议标准化通信,它构成了RAG在终端侧的最小可行形态,让智能体真正具备离线可运行、可审计、可嵌入的工程落地能力

weixin_32466193的博客 224

SQLite FTS5 + BM25 实现本地上下文感知检索

上下文感知检索是现代智能开发工具的核心能力之一,其本质是在无网络、低延迟约束下,从本地结构化数据中精准提取与当前操作强相关的语义片段。该能力依赖于轻量级嵌入式数据库的全文检索原理,特别是 SQLite 的 FTS5 引擎对 BM25 排序算法的原生支持,结合 ICU 分词器实现高质量中文处理。相比 Elasticsearch 等服务型方案,它以单文件、零依赖、进程内执行为技术价值,在插件开发、桌面应用、离线知识库等场景中成为首选落地路径。本文聚焦 context-mode 这一工程实践范式,详解 SQLit

weixin_32306957的博客 245

elasticsearch实战---中文拼音A-Z排序(完美解决)

0.背景 公司目前业务系统偏向后台系统,目前包含500W+数据,在许多列表中支持各种条件查询,含有大量的模糊搜索条件。由于在mysql中模糊查询效率低下,目前公司已使用es搜索引擎进行条件搜索。es版本如下: elasticsearch版本:6.3.2 java client版本:rest-high-level-client 6.3.2 问题:业务需要部分中文字段进行a-z拼音排序。 1.实现方案...

weixin_34075268的博客 5246
上一篇: java接口基本概念
下一篇: ## JDK8流式(Stream)API处理集合
RequirementJava
博客等级 码龄7年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值