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实现)相关推荐

  1. 【工具封装】Python 字典列表按中文姓名首字母排序

    第三方模块: 功       能: 汉字拼音转换模块,将汉字转为拼音:可以用于汉字注音.排序.检索. 模块名称: pypinyin 官方文档: https://pypi.org/project/pyp ...

  2. java 中文联系人排序_通讯录之按汉字首字母排序-java

    最近开发手机端OA系统通讯录时遇到了用汉字首字母排序的问题,各种谷歌后发现了一个轮子pinyin4J,这个轮子是可以将汉字转换成字母拼音,个人觉得很好用,完美的解决了排序的问题,分享一下. 一.工具介 ...

  3. 根据姓名首字母排序查询

    1.前台需要List<HashMap<String,Object>>类型的数据,先对查询出的List<UserVo>进行处理. 后台查询已经将姓名首字母查询出来(数 ...

  4. SQL语句按照姓名首字母排序

    Mysql 前言 UTF-8 GBK 前言   最近小咸儿做项目,根据业务需求,需要将查出来的人员姓名按照拼音首字母进行排序,小咸儿选择在SQL语句上对姓名字段进行排序,这样查出来的人员就已经是排好序 ...

  5. PHP二维数组按照中文姓名首字母排序

    方法一: 直接排序不返回首字母 $old_list = $this->model->field('id, number, username, mobile')->where('xxx ...

  6. PHP实现按姓名首字母排序

    代码展示 /*** 获取首字母* @param string $str 汉字字符串* @return string 首字母*/ //获取汉字的首字母 function getFirstCharters ...

  7. 按汉字首字母排序(sql语句)

    在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...

  8. 按汉字首字母排序(sql语句) 只为收集,本人复制粘贴水寒冰局的

    在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...

  9. java按照汉字拼音首字母排序

    实现按照汉字拼音字母排序的方法有两种: 一,就是在用java代码处理 要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境: 这里用到了Collator类,此类实现了Comparator接 ...

最新文章

  1. NetDevOps — NETCONF 协议
  2. 查看linux中某个端口(port)是否被占用
  3. Python list 数据类型:列表
  4. Kong 1.0正式发布,提供服务网格支持和插件开发工具包
  5. Valve开发校准软件,LCD屏也能与高端VR头显适配了
  6. ctc与临时限速服务器信息,基于CTC站场图图形元素设置高速铁路临时限速的方法...
  7. 09年全年的case处理总量
  8. C# 各种常用集合类型的线程安全版本
  9. 京东线报-京东实时线报-高级京东线报接口
  10. CorelDRAW X8最新版本安装使用教程
  11. Spark综合项目:企业电商分析平台
  12. 2018.6.17 英语六级学习单词汇总
  13. 企业数字化转型的核心—大数据分析平台
  14. 【基本算法】 位运算:二进制状态压缩
  15. 智能合约(Smart contract)
  16. mysql tracker_linux架设BT Tracker服务器小记
  17. 2019年最新中科院人工智能领域JCR期刊分区(附2019-2020人工智能领域顶级会议分类表)
  18. 【案例】下载站自动化 一个月发布3000+原创文章
  19. Ansys(Maxwell、Simplorer)与Simulink联合仿真(二)直线电机
  20. python strip()函数和Split函数的用法总结

热门文章

  1. matlab实现图片加亮、灰度、取反、增强对比度操作
  2. 社交媒体的节庆高光时刻
  3. Excel技巧:字符串拼接合集
  4. iOS系统中导航栏的转场解决方案与最佳实践
  5. 惯性导航学习笔记01 20220628
  6. QT学习之QPainter画家的基本使用
  7. 新的开始——写给自己的话
  8. 用Python玩人脸融合,想知道你未来孩子的长相?(附源码)
  9. 【开店连载记】-- 4 开店清单设备篇
  10. 每个服务器账号只能建一个dh,魔兽世界:如何在同一个服建立多个恶魔猎手角色?...