本文的需求是将一组数据按某一字段中文拼音排序,分享给大家Android实现中文按拼音排序方法,供大家参考,具体内容如下
1、Test测试类:

PinyinComparator comparator = new PinyinComparator();     Collections.sort(strList, comparator); 

其中strList中放置了数据,可以是任何对象,但要对PinyinComparator中的compare进行对应的修改,我Demo中为String[]。

2、PinyinComparator排序类:

public class PinyinComparator implements Comparator {   /**    * 比较两个字符串    */   public int compare(Object o1, Object o2) {     String[] name1 = (String[]) o1;     String[] name2 = (String[]) o2;     String str1 = getPingYin(name1[0]);     String str2 = getPingYin(name2[0]);     int flag = str1.compareTo(str2);     return flag;   }    /**    * 将字符串中的中文转化为拼音,其他字符不变    *    * @param inputString    * @return    */   public String getPingYin(String inputString) {     HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();     format.setCaseType(HanyuPinyinCaseType.LOWERCASE);     format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);     format.setVCharType(HanyuPinyinVCharType.WITH_V);      char[] input = inputString.trim().toCharArray();// 把字符串转化成字符数组     String output = "";      try {       for (int i = 0; i < input.length; i++) {         // \\u4E00是unicode编码,判断是不是中文         if (java.lang.Character.toString(input[i]).matches(             "[\\u4E00-\\u9FA5]+")) {           // 将汉语拼音的全拼存到temp数组           String[] temp = PinyinHelper.toHanyuPinyinStringArray(               input[i], format);           // 取拼音的第一个读音           output += temp[0];         }         // 大写字母转化成小写字母         else if (input[i] > 'A' && input[i] < 'Z') {           output += java.lang.Character.toString(input[i]);           output = output.toLowerCase();         }         output += java.lang.Character.toString(input[i]);       }     } catch (Exception e) {       Log.e("Exception", e.toString());     }     return output;   } }     

以上就是本文的全部内容,希望对大家的学习有所帮助。

更多相关文章

  1. Android(安卓)中文 API(123) —— AbsListView(一)
  2. Android(安卓)中文API (37) ―― AbsoluteLayout
  3. Android(安卓)TextView中文字设置超链接、颜色、字体
  4. 纯C语言INI文件解析
  5. android下的json解析
  6. toLowerCase()方法 toUpperCase()方法
  7. 【Android(安卓)Developers Training】 3. 构建一个简单UI
  8. [Android]根据名称name来获取string的值
  9. Android消息提示框

随机推荐

  1. 用 ref 访问 Vue.js 程序中的 DOM[每日前
  2. Android(安卓)在一个程序中启动另一个程
  3. MySQL中自增ID起始值修改方法
  4. MySQL出现SELECT list is not in GROUP B
  5. 【凯子哥带你学Android】Android专用Log
  6. 2021.1.17
  7. Debian设置允许root用户以ssh方式登录
  8. 【第562期】用 webpack 构建 node 后端代
  9. 我的51cto课程
  10. 活动|三次元世界等你来!!