java 中文联系人排序_通讯录之按汉字首字母排序-java
最近开发手机端OA系统通讯录时遇到了用汉字首字母排序的问题,各种谷歌后发现了一个轮子pinyin4J,这个轮子是可以将汉字转换成字母拼音,个人觉得很好用,完美的解决了排序的问题,分享一下。
一.工具介绍
pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min (xmlerlimin@gmail.com)。
支持同一汉字有多个发音
还支持拼音的格式化输出,比如第几声之类的,
同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载:
本文只是使用了pinyin4J的主要功能,还有更多更好耍的功能,大家可以去研究官网文档。哈哈
下载解压后的目录结构及说明如下 (1) doc : pinyin4j的api文档 (2) lib : pinyin4j的jar包 (3) src: pinyin4j的源代码 (4) CHANGELOG.txt : pinyin4j的版本更新日志
(5) COPYING.txt : LICENSE说明 (6) README.txt : pinyin4j的概要介绍
二.转换代码
// 获取汉字的首字母大写
public String getFirstSpell(String string) {
StringBuffer pybf = new StringBuffer();
char[] arr = string.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) { //如果已经是字母就不用转换了
try {
//获取当前汉字的全拼
String[] temp = PinyinHelper.toHanyuPinyinStringArray(
arr[i], defaultFormat);
if (temp != null) {
pybf.append(temp[0].charAt(0));// 取首字母
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
if (arr[i] >= 'a' && arr[i] <= 'z') {
arr[i] -= 32;
}
/*if (arr[0] >= 'A' && arr[0] <= 'Z') {// 将大写转换为小写
arr[0] += 32;
}*/
pybf.append(arr[i]);
}
}
return pybf.toString();
}
三.实现 Comparable 接口并且使用内部类compare重载compareTo方法实现排序代码。
Collections.sort(list, new Comparator>() {
public int compare(Map o1, Map o2) {
return getFirstSpellOne((String) o1.get("str"))
.compareTo(
getFirstSpellOne((String) o2
.get("str")));
}
});
四.测试效果
五.那么问题来了
这个列子只能按字符串第一个字符的首字母来排序,比如字符串张三和赵五第一个字符首字母是一样的,那能不能再通过第二个字符三和五来进行排序呐。如果字符串的第二个字符首字母也是一样的呐,依次类推。希望哪位大神好的思路交流交流,带我装逼带我飞。。。
六.JUST DO IT
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
java 中文联系人排序_通讯录之按汉字首字母排序-java相关推荐
- java pinyin4j 首字母_通讯录之按汉字首字母排序 --java--pinyin4J
最近开发手机端OA系统通讯录时遇到了用汉字首字母排序的问题,各种谷歌后发现了一个轮子pinyin4J,这个轮子是可以将汉字转换成字母拼音,个人觉得很好用,完美的解决了排序的问题,分享一下. 一.工具介 ...
- js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——za排序 az排序
js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序--z~a排序 & a~z排序 示例1 let arr = ["贵州省", "江苏省", & ...
- 按汉字首字母排序(sql语句)
在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...
- 按汉字首字母排序(sql语句) 只为收集,本人复制粘贴水寒冰局的
在sql server中可以直接通过SQL语句实现按汉字首字母排序,比如我们经常用到的"按姓名首字母排序" --把tableName和colName换成自己的就ok了 --按拼音 ...
- JAVA 根据汉字首字母排序
实际业务场景可能存在需要根据对象中文名称来进行排序的情况,下面分享下实现方案: 话不多说,上代码 List<RepairVo> list = new ArrayList<>() ...
- MySql中用sql语句实现按汉字首字母排序
转载自https://blog.csdn.net/hulinyi123456/article/details/79915521 1.mysql 1)按照汉字的拼音排序 如果存储汉字的字段编码使用的是G ...
- 根据汉字首字母排序并进行分组
需 求: 页面有一个下拉选项框(选择汽车品牌),由于品牌比较多,所以需要通过首字母就能快捷选择,也就是说:点击字母 "B"后,把汽车品牌首拼音字母为 "B" ...
- 从数据库取String的值存放到Map中 按汉字首字母排序并输出
前后端分离写法: pom.xml文件需要导pinyin4j包: <!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j --& ...
- java中英文汉语混合排序_Java编程实现中英混合字符串数组按首字母排序的方法...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...
最新文章
- JSP自定义标签渲染时报Illegal to flush错误
- formal method第10课
- redis缓存穿透、缓存击穿、缓存雪崩概念及解决方案
- SpringAop @AfterThrowing通知中获取异常信息并且在控制台打印
- 利用C#实现标准的 Dispose模式
- 02如何抓住重点,系统高效地学习数据结构与算法?
- java中的map是什么_转载java中Map的详解
- C++11新特性之decltype关键字的使用
- 机器视觉的典型应用及领域分析
- Impala中行转列在合并列
- 常见iPhone设备尺寸及分辨率(持续更新)
- 我终于知道,中国互联网是怎么弯道超车,干翻美国了
- 操作系统实验 文件复制/复制文件
- 中文编程专栏目录, 初衷和希冀
- excel设置行高等于列宽_如何在Excel中设置行高和列宽
- 4、spss做多元线性回归
- 人口会一直增长下去吗_现在世界人口约多少亿 世界人口会一直增加吗还是越来越少...
- Mac 终端配置 oh-my-zsh 和自动补全
- LeetCode 118 Pascal's Triangle(帕斯卡三角形)(vector)
- Scratch软件编程等级考试四级——20210626