姓名首字母排序(java实现)
pinyin4j-2.5.1.jar:支持大多数流行拼音系统的汉字(简体和繁体),包括汉语拼音,同用拼音,Wade-Giles,MPS2,Yale和Gwoyeu Romatzyh。支持多种发音和定制输出。
pinyin4j-2.5.1.jar包,
Maven下载地址
此地址推荐谷歌浏览器下载,本人用搜狗浏览器下载缓慢,谷歌下载速度相对较快。
我的网盘下载地址:我的网盘下载地址
提取码:nq46
idea导入jar包教程
我的代码是先判断年纪,年纪相同判断 名字拼音首字母。else中为判断名字拼音首字母的办法,要比较整个名字,用个for循环,else下面String语句0换成i,可以判断整个名字拼音的顺序
Collections.sort(a1,new Comparator<Person>() {@Overridepublic int compare(Person p1, Person p2) {if (p1.getAge() != p2.getAge()) {return p1.getAge() - p2.getAge();} else {String o1 = p1.getName();String o2 = p2.getName();int code1 = o1.charAt(0);int code2 = o2.charAt(0);if (code1 != code2) {if (Character.isSupplementaryCodePoint(code1)|| Character.isSupplementaryCodePoint(code2)) {return code1 - code2;}String pinyin1 = PinyinHelper.toHanyuPinyinStringArray((char) code1) == null? null : PinyinHelper.toHanyuPinyinStringArray((char) code1)[0];String pinyin2 = PinyinHelper.toHanyuPinyinStringArray((char) code2) == null? null : PinyinHelper.toHanyuPinyinStringArray((char) code2)[0];if (pinyin1 != null && pinyin2 != null) { // 两个字符都是汉字if (!pinyin1.equals(pinyin2)) {return pinyin1.compareTo(pinyin2);}} else {return code1 - code2;}}}return p1.getAge() - p2.getAge();}});
运行截图:
源代码:
package CollectionsDemo;import net.sourceforge.pinyin4j.PinyinHelper;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class MethodDemo {public static void main(String[] args) {ArrayList<Person> a1 = new ArrayList<>();Person p1 = new Person("欧阳耀莹",31);Person p2 = new Person("欧阳子遥",21);Person p3 = new Person("胡歌",35);Person p4 = new Person("安安",35);Collections.addAll(a1,p1,p2,p3,p4);System.out.println(a1);Collections.sort(a1);System.out.println(a1);System.out.println("慕".charAt(0));System.out.println("胡".charAt(0));Collections.sort(a1,new Comparator<Person>() {@Overridepublic int compare(Person p1, Person p2) {if (p1.getAge() != p2.getAge()) {return p1.getAge() - p2.getAge();} else {String o1 = p1.getName();String o2 = p2.getName();int code1 = o1.charAt(0);int code2 = o2.charAt(0);if (code1 != code2) {if (Character.isSupplementaryCodePoint(code1)|| Character.isSupplementaryCodePoint(code2)) {return code1 - code2;}String pinyin1 = PinyinHelper.toHanyuPinyinStringArray((char) code1) == null? null : PinyinHelper.toHanyuPinyinStringArray((char) code1)[0];String pinyin2 = PinyinHelper.toHanyuPinyinStringArray((char) code2) == null? null : PinyinHelper.toHanyuPinyinStringArray((char) code2)[0];if (pinyin1 != null && pinyin2 != null) { // 两个字符都是汉字if (!pinyin1.equals(pinyin2)) {return pinyin1.compareTo(pinyin2);}} else {return code1 - code2;}}}return p1.getAge() - p2.getAge();}});System.out.println(a1);}
}
姓名首字母排序(java实现)相关推荐
- 【工具封装】Python 字典列表按中文姓名首字母排序
第三方模块: 功 能: 汉字拼音转换模块,将汉字转为拼音:可以用于汉字注音.排序.检索. 模块名称: pypinyin 官方文档: https://pypi.org/project/pyp ...
- java 中文联系人排序_通讯录之按汉字首字母排序-java
最近开发手机端OA系统通讯录时遇到了用汉字首字母排序的问题,各种谷歌后发现了一个轮子pinyin4J,这个轮子是可以将汉字转换成字母拼音,个人觉得很好用,完美的解决了排序的问题,分享一下. 一.工具介 ...
- 根据姓名首字母排序查询
1.前台需要List<HashMap<String,Object>>类型的数据,先对查询出的List<UserVo>进行处理. 后台查询已经将姓名首字母查询出来(数 ...
- SQL语句按照姓名首字母排序
Mysql 前言 UTF-8 GBK 前言 最近小咸儿做项目,根据业务需求,需要将查出来的人员姓名按照拼音首字母进行排序,小咸儿选择在SQL语句上对姓名字段进行排序,这样查出来的人员就已经是排好序 ...
- PHP二维数组按照中文姓名首字母排序
方法一: 直接排序不返回首字母 $old_list = $this->model->field('id, number, username, mobile')->where('xxx ...
- PHP实现按姓名首字母排序
代码展示 /*** 获取首字母* @param string $str 汉字字符串* @return string 首字母*/ //获取汉字的首字母 function getFirstCharters ...
- 按汉字首字母排序(sql语句)
在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...
- 按汉字首字母排序(sql语句) 只为收集,本人复制粘贴水寒冰局的
在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...
- java按照汉字拼音首字母排序
实现按照汉字拼音字母排序的方法有两种: 一,就是在用java代码处理 要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境: 这里用到了Collator类,此类实现了Comparator接 ...
最新文章
- NetDevOps — NETCONF 协议
- 查看linux中某个端口(port)是否被占用
- Python list 数据类型:列表
- Kong 1.0正式发布,提供服务网格支持和插件开发工具包
- Valve开发校准软件,LCD屏也能与高端VR头显适配了
- ctc与临时限速服务器信息,基于CTC站场图图形元素设置高速铁路临时限速的方法...
- 09年全年的case处理总量
- C# 各种常用集合类型的线程安全版本
- 京东线报-京东实时线报-高级京东线报接口
- CorelDRAW X8最新版本安装使用教程
- Spark综合项目:企业电商分析平台
- 2018.6.17 英语六级学习单词汇总
- 企业数字化转型的核心—大数据分析平台
- 【基本算法】 位运算:二进制状态压缩
- 智能合约(Smart contract)
- mysql tracker_linux架设BT Tracker服务器小记
- 2019年最新中科院人工智能领域JCR期刊分区(附2019-2020人工智能领域顶级会议分类表)
- 【案例】下载站自动化 一个月发布3000+原创文章
- Ansys(Maxwell、Simplorer)与Simulink联合仿真(二)直线电机
- python strip()函数和Split函数的用法总结