中文拼音首字母排序比较器
说明
主要是之前和别人讨论排序问题,当时碰到的问题是,需要按照中文第一个字的拼音首字母排序,百度发现自带的比较器 Collator.getInstance(Locale.CHINA)
,但是使用和追源码发现
@Overridepublic int compare(Object o1, Object o2) {return compare((String)o1, (String)o2);}
这里它只支持传入String
类型,所以打算做一个加强版。采用注解确定实体哪个字段参与排序。
github地址
比较器 InitialsChinaComparator
@Overridepublic int compare(Object o1, Object o2) {try {Field[] o1Fields = getFields(o1);String source = "";String target = "";// 获取字段值for (Field o1Field : o1Fields) {CompareString compareString = o1Field.getAnnotation(CompareString.class);if (compareString != null) {source = (String) getValueByFieldNameByGetMethod(o1, o1Field.getName());break;}}// 获取字段值Field[] o2Fields = getFields(o2);for (Field o2Field : o2Fields) {CompareString compareString = o2Field.getAnnotation(CompareString.class);if (compareString != null) {target = (String) getValueByFieldNameByGetMethod(o2, o2Field.getName());break;}}// 比较Collator collator = Collator.getInstance(Locale.CHINA);return this.order*collator.compare(source, target);} catch (Exception e) {throw new RuntimeException(e.getMessage());}}
使用
实体
public class TestCompare {// 标记参与排序@CompareStringprivate String name;...// getter// setter}
排序
List<TestCompare> tests = new ArrayList<TestCompare>();
TestCompare test1 = new TestCompare("杨");
TestCompare test2 = new TestCompare("白");
TestCompare test3 = new TestCompare("康");tests.add(test1);
tests.add(test2);
tests.add(test3);Collections.sort(tests, new InitialsChinaComparator(InitialsChinaComparator.DESC));for(TestCompare test:tests) {System.out.println(test.getName());}
最后
欢迎大佬们指导
中文拼音首字母排序比较器相关推荐
- [转载]ExtJS中grid按照中文拼音首字母排序、改变行背景、列背景、静态数据分页不再困难...
代码 1 本示例主要使用到了静态数据分页 Ext.data.PagingMemoryProxy组件.Ext.PagingToolbar分页条.viewConfig的getRowClass 方法.列co ...
- oracle 中文拼音取首字母,ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数...
当前位置:我的异常网» 数据库 » ORACLE依据中文拼音首字母排序.取得中文拼音首字母 ORACLE依据中文拼音首字母排序.取得中文拼音首字母函数 www.myexceptions.net 网友 ...
- mysql 按照中文拼音首字母排序
ORDER BY convert(name using gbk) ASC
- List 之按照中文拼音首字母排序
public class TestCompare {private static Comparator comparator=Collator.getInstance(java.util.Locale ...
- 中文按拼音首字母排序的C++实现方案
先介绍下背景,最近有个需求,需要将用户的好友列表按照昵称的拼音首字母排序,类似于手机电话簿的联系人.一开始建议让终端同学去做这点,毕竟终端现有的电话簿模块已经实现了,不过终端同学说电话簿是系统组件,移 ...
- MySQL中文无法按照拼音首字母排序解决方法convert(name USING gbk)
问题如下: 使用默认的order by函数无法对中文数据按照首字母进行排序 SELECT * FROM `test_table` ORDER BY company_name,reply_room_na ...
- mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序
mysql表中文字段提取拼音首字母 SELECT a.提取字段, IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 USING gbk), 1)), ...
- Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)
简介 这篇文章主要介绍了Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)以及相关的经验技巧,文章约21106字,浏览量320,点赞数5,值得参考! ...
- Java 按照拼音首字母排序
默认的 Collection.sort() 是按照 ASCII 码排序, 不过, 有第二个重载方法, 第二个参数可以传入 Comparator 对象 java.text.Collator 可以用于本地 ...
最新文章
- 《Ext JS高级程序设计》节选: 一个结合DataWrite和RowEditor的Grid示例(1)
- TypeError: iter() returned non-iterator of type
- oracle rman 跨版本恢复 11.2.0.3- 11.2.0.4
- javaweb学习总结(四十二)——Filter(过滤器)学习
- ubuntu如何调出python_ubuntu|linux下 如何用python 模拟按键
- 五年引用量最高的10大AI论文:Adam第一,Transformer上榜,竟然没有ResNet?
- Web开发——问题:js/css文件修改提交后,没有效果
- python 字符串前面的“r“是个啥?
- matlab 3sls,几种常用的计量经济学软件
- Hyperchain 超块链创始人史兴国对谈杨民道:新公链赛道烽烟再起,move语言能开启下一轮牛市吗?
- Loadrunner教程
- html5 canvas图片反色
- LOJ 6437 [PKUSC 2018] PKUSC
- 数学分析高等代数考研试题荟萃[更新至2017年12月28日]
- three.js例子
- 阿里专家直击前端盛会JSConf2017_Day2:见证Moment.js精彩分享
- JDK14新特性之Record
- 《两种文化与科学革命》读后感
- coteditor mac版文本编辑器
- 基于Python_opencv的车牌识别系统