中英文混合按首字母排序
以前在外资不涉及到中文排序,目前滴滴有个需求是要按照中文首字母进行排序显示,还会有英文混合其中。
用到了一个第三方包。
<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version></dependency>
封装了3个方法。可以根据list,map的key,map的value进行排序。返回类型与输入一致。
import net.sourceforge.pinyin4j.PinyinHelper;import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;public class SortByChineseUtil {public static List sort(List list) {return sortByChinese(list);}public static Map sortByKey(Map map) {ArrayList list = new ArrayList(map.keySet());List<String> sortList = sortByChinese(list);LinkedHashMap result = new LinkedHashMap();for (String str : sortList) {result.put(str, map.get(str));}return result;}public static Map sortByValue(Map map) {List<String> list = new ArrayList<String>(map.values());List<String> sortList = sortByChinese(list);LinkedHashMap result = new LinkedHashMap();for (String str : sortList) {result.put(getKey(map, str), str);}return result;}private static String getKey(Map map, String value) {for (Object key : map.keySet()) {if (map.get(key).equals(value)) {return key.toString();}}return null;}/*** 看是否是汉字,是汉字进行匹配* 看是否是英文,是英文直接转成小写加进去。* 其他则直接加* @param list* @return*/private static List sortByChinese(List<String> list) {TreeMap map = new TreeMap();String[] s = new String[list.size()];for (String str : list) {char[] chars = str.toCharArray();if (Character.toString(chars[0]).matches("[\\u4E00-\\u9FA5]+")) {String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(chars[0]);map.put(setMapKey(map,Character.toString(pinyinArray[0].charAt(0))), str);} else if (Character.toString(chars[0]).matches("[a-zA-Z]+")) {map.put(setMapKey(map,Character.toString(chars[0]).toLowerCase()), str);} else {map.put(setMapKey(map,Character.toString(chars[0])), str);}}List<String> result = new ArrayList<String>(map.values());return result;}/*** 解决key一样会覆盖的问题 */private static String setMapKey(TreeMap map,String key){if(map.get(key) == null){return key;}else{return key + key;}}
}
测试
public static void main(String[] args) {HashMap map = new HashMap();map.put("2","日本");map.put("3","美国");map.put(1,"中国");map.put(77,"IT服务");map.put(8,"it");map.put(99,",");System.out.println(SortByChineseUtil.sortByValue(map));}
测试结果
{99=,, 8=it, 77=IT服务, 3=美国, 2=日本, 1=中国}进程已结束,退出代码 0
中英文混合按首字母排序相关推荐
- 中英文混合按照首字母排序
中英文混合按照首字母排序 在项目做报表的时候,客户那边提出了默认按照客户的首字母排序,做完才发现有些客户的名字是英文,所以在这边写了一个混合排序的方法.思想就是:如果检查是汉语就把拼音的首字母附在汉字 ...
- mysql中英文姓名按照首字母排序_mysql 汉字根据首字母排序
1:如果数据库表字段的字符编码是latin1_swedish_ci select * from tablename order by birary(name) asc ; tablename:数据库表 ...
- java中英文汉语混合排序_Java编程实现中英混合字符串数组按首字母排序的方法...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...
- java中英文混合排序_Java编程实现中英混合字符串数组按首字母排序的方法
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...
- 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序
[package com.syz;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import ja ...
- 用MySQL数据库来处理中英文取首字母排序
我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的. 我们建立一个函数: DELIMITER $$ CREATE ...
- mysql 中英按字母排序_利用MySQL数据库来处理中英文取首字母排序
很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需. 我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何 ...
- MySQL数据库处理中英文取首字母排序
需求:联系人列表按照首字母排序 通常如果表设计的时候增加了对应的首字母字段显然很好实现,如果没加,应该如何实现!? 数据库创建 函数 执行以下代码 CREATE DEFINER=``@`` FUNCT ...
- java实现字母排序_Java实现按中文首字母排序的具体实例
要实现"按中文首字母排序"操作,可以使用java.util包下的arrays类的sort()函数. arrays类包含用来操作数组(比如排序和搜索)的各种方法. 比如对于排序操作的 ...
最新文章
- dreamweaver在onLoad运行RecordsetFind.htm时出错
- python学到什么程度可以做兼职-Python学到什么程度就可以找工作?
- 2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest
- 一文读懂熔断器和重试机制
- mysql command line client和mysql.exe输入密码后闪退问题解决方法
- ubuntu fstab 示例
- img标签 三种获取数据方式
- 2021年中国电动气动控制器市场趋势报告、技术动态创新及2027年市场预测
- 使用GDAL下载并转换SRTM的DEM数据(一)
- python 元组的一点问题
- ORA-01031:insufficient privileges
- itextPdf pdf加水印
- Rendezvous机制完成数据交互。Rendezvous是一个基于—_者一__者模型设计的抽象类。
- specular图使用方法_次世代贴图教程_SPECULAR、SPECULAR POWER原理教程
- 原创超简单代码(1.21.50)
- Http调用第三方接口的两种方式实例《超详细!!!》***
- 2020届一轮复习高中数学必考点高中函数知识点总结(纯干货)
- MagicLicense破解记录
- 独家 度小满教育、医美分期不做直营了
- SEPM执行LiveUpdate 失败,错误“磁盘空间不足...”
热门文章
- 常见的敏感文件泄漏总结
- CF1770F Koxia and Sequence
- 第九章 在网页中创建超链接
- mybatis-plus的基础入门
- python数据模块下载顺序_对Python random模块打乱数组顺序的实例讲解
- 怎么高考考入清华大学计算机系,看牛人考研 通过何种手段考取清华计算机系...
- 健康 特色 小吃技术
- 集合概述二(Set接口+HashSet集合+LinkedHashSet集合+TreeSet集合)
- 计算机辅助设计在中国的现状,解析中国CAD市场发展现状及未来趋势
- 加密托管风起:做区块链世界的银行