中英文混合按照首字母排序
在项目做报表的时候,客户那边提出了默认按照客户的首字母排序,做完才发现有些客户的名字是英文,所以在这边写了一个混合排序的方法。思想就是:如果检查是汉语就把拼音的首字母附在汉字的前面,调用默认的sort()方法即可。如有错误请大家指教。
1.在http://mvnrepository.com/下载pinyin4j.jar包

2.以下是demo源码

   /***按照中文首字母排序* @author lichanghua**/
public class Test10 {//主函数public static void main(String[] args) {//第一类根据数组中首字母的排序
//      String data[] = new String[]{"王二麻子","张三","李四","阿一","田七","AAA"};
//      data = sort(data);
//      for(String val : data){
//          System.out.println(val);
//      } //第二类根据集合对象的某个属性的首字母排序List<PersonBean> list = new ArrayList<PersonBean>();  PersonBean person1 = new PersonBean();  person1.setId(1);  person1.setName("张三");  PersonBean person2 = new PersonBean();  person2.setId(2);  person2.setName("王二麻子");  PersonBean person3 = new PersonBean();  person3.setId(3);  person3.setName("阿一");  PersonBean person4 = new PersonBean();  person4.setId(4);  person4.setName("田七");PersonBean person5 = new PersonBean();  person5.setId(5);  person5.setName("ABHH");PersonBean person6 = new PersonBean();  person6.setId(6);  person6.setName("CSHSH");list.add(person1);  list.add(person2);  list.add(person3);  list.add(person4);  list.add(person5);list.add(person6);System.out.println("排序前");  for(PersonBean person : list){  System.out.println(person.getId()+"  "+person.getName());  }  list = listToSortByName(list);  System.out.println("排序后");  for(PersonBean person : list){  System.out.println(person.getId()+"  "+person.getName());}}/*** 根据数组里面首字母排序* @param data* @return*/public static String[] sort(String [] data){  if(data==null || data.length==0){  return null;  }  Comparator<Object> comparator = Collator.getInstance(java.util.Locale.CHINA);  Arrays.sort(data, comparator);return data;  }  /** * @TODO 将一个装有person对象的 list 根据name 首字母排序 * @param List 排序前的数据源 * @return list排序后的数据 */  public static List<PersonBean> listToSortByName(List<PersonBean> list){  if(list==null || list.size()==0){  return null;  }  Map<String, PersonBean> map = new HashMap<String, PersonBean>();  String names[] = new String[list.size()];  for(int i=0;i<list.size();i++){  String name = list.get(i).getName();String alphabet = name.substring(0, 1);/*判断首字符是否为中文,如果是中文便将首字符拼音的首字母和&符号加在字符串前面*/if (alphabet.matches("[\\u4e00-\\u9fa5]+")) {name = getAlphabet(name) + "&" + name;names[i] = name;}else{names[i]=name;}//names[i] = name;  map.put(name, list.get(i));  }  names = sort(names);  list.clear();  for(String name : names){  if(map.containsKey(name))  list.add(map.get(name));  }  return list;  }   /*** 调用汉子首字母转化为拼音的根据类,,需要在项目中导入pinyin4j.jar包* @param str* @return*/public static String getAlphabet(String str) {HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();// 输出拼音全部小写defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 不带声调defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);String pinyin = null;try {pinyin = (String) PinyinHelper.toHanyuPinyinStringArray(str.charAt(0), defaultFormat)[0];} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}return pinyin.substring(0, 1);}

3.运行结果

中英文混合按照首字母排序相关推荐

  1. 中英文混合按首字母排序

    以前在外资不涉及到中文排序,目前滴滴有个需求是要按照中文首字母进行排序显示,还会有英文混合其中. 用到了一个第三方包. <dependency><groupId>com.bel ...

  2. mysql中英文姓名按照首字母排序_mysql 汉字根据首字母排序

    1:如果数据库表字段的字符编码是latin1_swedish_ci select * from tablename order by birary(name) asc ; tablename:数据库表 ...

  3. java中英文汉语混合排序_Java编程实现中英混合字符串数组按首字母排序的方法...

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...

  4. java中英文混合排序_Java编程实现中英混合字符串数组按首字母排序的方法

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...

  5. 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序

    [package com.syz;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import ja ...

  6. 用MySQL数据库来处理中英文取首字母排序

    我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的. 我们建立一个函数: DELIMITER $$ CREATE ...

  7. mysql 中英按字母排序_利用MySQL数据库来处理中英文取首字母排序

    很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需. 我们的联系人列表经常会有按照首字母排序的需求.  这个很方便, 很清晰, 如果不说性能如何 ...

  8. MySQL数据库处理中英文取首字母排序

    需求:联系人列表按照首字母排序 通常如果表设计的时候增加了对应的首字母字段显然很好实现,如果没加,应该如何实现!? 数据库创建 函数 执行以下代码 CREATE DEFINER=``@`` FUNCT ...

  9. java实现字母排序_Java实现按中文首字母排序的具体实例

    要实现"按中文首字母排序"操作,可以使用java.util包下的arrays类的sort()函数. arrays类包含用来操作数组(比如排序和搜索)的各种方法. 比如对于排序操作的 ...

最新文章

  1. 2019年安徽省模块七满分多少_艺考资讯 | 2021年美术统考考多少分才能通过?过了合格线有什么意义?美术生一定要重视!...
  2. springcloud配置文件上传大小_SpringCloud实战二-Nacos
  3. php包含文件时显示空白页,php中出现空白页的原因及解决方法汇总_php技巧
  4. 神策数据 2018 校招启程了!
  5. IDEA中添加tomcat服务器和创建一个新的web项目
  6. redis储存List类型数据
  7. android中的帧动画,[Android开发] Android中的帧动画
  8. 自身经历第二次面试(阿里)
  9. 引用参数与引用返回值
  10. spring controller 增加header字段forward_Spring 注解编程之模式注解
  11. GitHub开源项目:用于构建接入网络和模块化网络服务的平台
  12. CentOS7出现“FirewallD is not running”
  13. DHTML【3】--HTML
  14. 「三分钟系列01」3分钟看懂快速排序
  15. 关于校验与确认两步操作时,新增,修改需要考虑的问题
  16. 分层架构中各层之间关系如何界定,期待大家来讨论
  17. 【多媒体技术】多媒体技术期末复习题
  18. 在Ubuntu上安装D-link DWA-131驱动
  19. 生日快乐程序_这家线下服装店,靠小程序做活动7天就获客6万
  20. LaTeX设置图片左对齐

热门文章

  1. 翌加:抖音带货的具体途径有哪些呢
  2. k8s_Node节点安全基线
  3. java数字倒序输出
  4. 笔记本电池9针脚图解_旧毛衣如何妙用改造成暖暖的抱枕教程图解
  5. 成为一名网络安全工程师,你应该学习什么?
  6. 【src挖掘】fofa联动xray批量刷src
  7. linux运维知识点
  8. 【macOS软件】iThoughtsX 9.3 思维导图软件
  9. shell 浮点数计算使用bc
  10. 【Android开发】自定义圆角button样式