Android实现中文按拼音排序方法
本文的需求是将一组数据按某一字段中文拼音排序,分享给大家Android实现中文按拼音排序方法,供大家参考,具体内容如下
1、Test测试类:
PinyinComparatorcomparator=newPinyinComparator(); Collections.sort(strList,comparator);
其中strList中放置了数据,可以是任何对象,但要对PinyinComparator中的compare进行对应的修改,我Demo中为String[]。
2、PinyinComparator排序类:
publicclassPinyinComparatorimplementsComparator<Object>{ /** *比较两个字符串 */ publicintcompare(Objecto1,Objecto2){ String[]name1=(String[])o1; String[]name2=(String[])o2; Stringstr1=getPingYin(name1[0]); Stringstr2=getPingYin(name2[0]); intflag=str1.compareTo(str2); returnflag; } /** *将字符串中的中文转化为拼音,其他字符不变 * *@paraminputString *@return */ publicStringgetPingYin(StringinputString){ HanyuPinyinOutputFormatformat=newHanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[]input=inputString.trim().toCharArray();//把字符串转化成字符数组 Stringoutput=""; try{ for(inti=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]; } //大写字母转化成小写字母 elseif(input[i]>'A'&&input[i]<'Z'){ output+=java.lang.Character.toString(input[i]); output=output.toLowerCase(); } output+=java.lang.Character.toString(input[i]); } }catch(Exceptione){ Log.e("Exception",e.toString()); } returnoutput; } }
以上就是本文的全部内容,希望对大家的学习有所帮助。