当前位置:   article > 正文

Android 按照字母排序汉字,可用于通讯录_安卓 compare 怎么实现同字母汉字在前字母在后

安卓 compare 怎么实现同字母汉字在前字母在后

比较类,资源类

  1. public class CompareData implements Comparable<CompareData> {
  2. private String str;
  3. public CompareData(String str) {
  4. this.str = str;
  5. }
  6. @Override
  7. public int compareTo(CompareData o) {
  8. char strFirstChar = getStrFirstChar(str);
  9. char strFirstCharO = getStrFirstChar(o.str);
  10. if (strFirstChar < strFirstCharO) {
  11. return -1;
  12. }
  13. if (strFirstChar > strFirstCharO) {
  14. return 1;
  15. }
  16. return 0;
  17. }
  18. private char getStrFirstChar(String str) {
  19. String pinyinFirstLetter = PinyinUtils.getPinyinFirstLetter(str);
  20. char c = pinyinFirstLetter.charAt(0);
  21. return c;
  22. }
  23. public String getStr() {
  24. return str;
  25. }
  26. public void setStr(String str) {
  27. this.str = str;
  28. }
  29. }

AndroidUtilCode 的 pinyinutil

  1. List<CompareData> listDatas = new ArrayList<CompareData>() {{
  2. add(new CompareData("张三"));
  3. add(new CompareData("李四"));
  4. add(new CompareData("王麻子"));
  5. add(new CompareData("鬼脚七"));
  6. add(new CompareData("黄飞鸿"));
  7. add(new CompareData("小白兔"));
  8. add(new CompareData("白又白"));
  9. add(new CompareData("臭傻吊"));
  10. }};
  11. Collections.sort(listDatas);
  12. for (int i = 0; i < listDatas.size(); i++) {
  13. CompareData compareData = listDatas.get(i);
  14. System.out.println(compareData.getStr() + "");
  15. }

效果:

拼音带音标的尝试:

    compile 'com.github.open-android:pinyin4j:2.5.0'
  1. //-------------------指定格式转换----------------------------
  2. HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
  3. // UPPERCASE:大写 (ZHONG)
  4. // LOWERCASE:小写 (zhong)
  5. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);//输出小写
  6. // WITHOUT_TONE:无音标 (zhong)
  7. // WITH_TONE_NUMBER1-4数字表示音标 (zhong4)
  8. // WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng)
  9. format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
  10. // WITH_V:用v表示ü (nv)
  11. // WITH_U_AND_COLON:用"u:"表示ü (nu:)
  12. // WITH_U_UNICODE:直接用ü (nü)
  13. format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
  14. String[] hao = new String[0];
  15. try {
  16. hao = PinyinHelper.toHanyuPinyinStringArray('你', format);
  17. } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
  18. badHanyuPinyinOutputFormatCombination.printStackTrace();
  19. }
  20. for (String s : hao) {
  21. System.out.println(s);
  22. }

如果是多音字那么就会有俩个,

可以结合我上面的比较类直接实现多功能

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/596804
推荐阅读
相关标签
  

闽ICP备14008679号