欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现中文按拼音排序方法

程序员文章站 2024-02-28 07:58:52
本文的需求是将一组数据按某一字段中文拼音排序,分享给大家android实现中文按拼音排序方法,供大家参考,具体内容如下 1、test测试类: pinyinc...

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

pinyincomparator comparator = new pinyincomparator(); 
    collections.sort(strlist, comparator); 

其中strlist中放置了数据,可以是任何对象,但要对pinyincomparator中的compare进行对应的修改,我demo中为string[]。

2、pinyincomparator排序类:

public class pinyincomparator implements comparator<object> { 
  /** 
   * 比较两个字符串 
   */ 
  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; 
  } 
} 

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