• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java编程实现中英混合字符串数组按首字母排序的方法

Java编程实现中英混合字符串数组按首字母排序的方法

作者:luoboo525 字体:[增加 减小] 来源:互联网 时间:2017-05-28

luoboo525 通过本文主要向大家介绍了java编程数组,java字符串编程题,java编程思想,java编程思想第六版,java编程软件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下:

在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如:

String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分", "的人", "反对高铁", "泛代数", "上的投入", "和国家" };
/*设置语言环境*/
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
Arrays.sort(arrays, com);
for (String item:arrays) {
 System.out.print(item+" ");
}

</div>

输出的结果为:“gyu  sdf  zf  大同  的人  地方  反对高铁  泛代数  和国家  三等分  上的投入  收到”;在Java中排列的顺序是按照数字->英文->汉字进行排序的,这种排序方式可以满足部分要求,但很多情况下我们并不希望这样排列!例如Anroid中的通讯录,音乐播放列表等等,这些情形下我们希望英文首字母和中文拼音首字母一样的排列在一起以方便查询。由于这类排序算法很复杂,例如首字母相同的字符串还要接着比较第二个、第三个...。但是如果我们将jdk自带的排序加以应用就不会显得那么复杂了;

我的想法是这样的:既然Java中排序是按数字->英文->汉字来进行排序的,那我们就把每个汉字打头的字符串前面加上一个该字符串第一个字符的拼音的首字母和一个区分符“&”,再使用jdk提供的排序函数进行排序,这时我们得到的就是我们想要的排序的数组了。然后再遍历数组,将包含&符号的字符串去掉&和第一个英文字母便完成了整个排序了,具体实现代码如下(获取汉字拼音需要引用该jar:pinyin4j-2.5.0.jar):

/**
* 将字符串数字按首字母先后进行排序 
* 
* Java原生排序为 数字->英文->中文 
* 为了将英文和中文首字母相同的排列到一起 
* 先将字符串首字符为汉字的改为该汉字的首字母加上该字符串 
* 为了以示区分中间再加一个分割符& 
* 然后使用Java原生排序算法 
* 再将包含&字符的字符串中的&和首字母去除从而达到排序目的 
* */ 
public static void main(String[] args) { 
  String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分", "的人", "反对高铁", "泛代数", "上的投入", "和国家" };
  for (int i = 0; i < arrays.length; i++) {
   String str = arrays[i];
   if (str.length() == 0)
    return;
   String alphabet = str.substring(0, 1);
   /*判断首字符是否为中文,如果是中文便将首字符拼音的首字母和&符号加在字符串前面*/
   if (alphabet.matches("[\\u4e00-\\u9fa5]+")) {
    str = getAlphabet(str) + "&" + str;
    arrays[i] = str;
   }
  }
  /*设置排序语言环境*/
  Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
  Arrays.sort(arrays, com);
  /*遍历数组,去除标识符&及首字母*/
  for (int i=0;i<arrays.length;i++) {
   String str=arrays[i];
   if(str.contains("&")&&str.indexOf("&")==1){
    arrays[i]=str.split("&")[1];
   }
   System.out.println(arrays[i]);
  }
 }
 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);
}

</div>

这时输出结果为:“大同 的人 地方 反对高铁 泛代数 gyu 和国家 三等分 上的投入 收到 sdf zf”,大家也可以自己尝试自己写排序算法去实现,锻炼一下思维也不无坏处,呵呵。

希望本文所述对大家Java程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java编程实现中英混合字符串数组按首字母排序的方法

相关文章

  • 2017-05-28java操作mysql实现增删改查的方法
  • 2017-05-28详解spring Boot Cli的配置和使用
  • 2017-05-28浅谈多线程中的锁的几种用法总结(必看)
  • 2017-05-28Java可变参数列表详解
  • 2017-05-28Mybaits配置文件之动态SQL配置备忘录
  • 2017-05-28Struts2 文件上传进度条的实现实例代码
  • 2017-05-28Java NIO:浅析IO模型_动力节点Java学院整理
  • 2017-05-28List集合对象中按照不同属性大小排序的实例
  • 2017-05-28Java中Object.equals和String.equals的区别详解
  • 2017-05-28Java中ArrayList类详细介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java中的对象和引用详解
    • Java操作另一个Java程序使其重启的简单实现
    • 二维码生成Java实现代码
    • java 基础之JavaBean属性命名规范问题
    • springboot集成mybatis实例代码
    • Java使用强大的Elastisearch搜索引擎实例代码
    • 关于多线程常用方法以及对锁的控制(详解)
    • java异常处理详细介绍及实例
    • Java语言实现简单FTP软件 辅助功能模块FTP站点管理实现(12)
    • springmvc实现简单的拦截器

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有