失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 中英文混合排序

中英文混合排序

时间:2022-01-11 04:39:26

相关推荐

中英文混合排序

好久没有写博客了,期间在做桌面云,被要求保密哈。不过最近在写一个android程序,需要实现一个中英文混合排序。不说了,直接代码;

HanYuUtil.java

import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;public class HanYuUtil {/*** 将单个字符(包括单个汉字或者单个英文字母)转换为小写字母* @param c* @return*/public String getCharacterPinYin(char c){String[] pinyin=null;HanyuPinyinOutputFormat format =new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.LOWERCASE);format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//汉字没有声调format.setVCharType(HanyuPinyinVCharType.WITH_V);try{pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);}catch(BadHanyuPinyinOutputFormatCombination e){e.printStackTrace();}// 如果c不是汉字,toHanyuPinyinStringArray会返回nullif (pinyin == null)return ((Character)c).toString().toLowerCase();// 只取一个发音,如果是多音字,仅取第一个发音return pinyin[0];}/*** 将包含中英文的字符串以小写英文字母的形式返回* @param str* @return*/public String getStringPinYin(String str){StringBuilder sb = new StringBuilder();String tempPinyin = null;for (int i = 0; i < str.length(); ++i){tempPinyin = getCharacterPinYin(str.charAt(i));sb.append(tempPinyin);}return sb.toString();}}

CustomerComparator.java

import parator;import com.xyz.kjy.db.Customer;public class CustomerComparator implements Comparator<Customer> {@Overridepublic int compare(Customer customer0, Customer customer1) {// 按照商家名称排序String catalog0 = "";String catalog1 = "";if(customer0!=null&&customer0.getStoreName()!=null)catalog0=HanYuUtil.getStringPinYin(customer0.getStoreName());if(customer1!=null&&customer1.getStoreName()!=null)catalog1=HanYuUtil.getStringPinYin(customer1.getStoreName());return pareTo(catalog1);}}

Customer.java

public class Customer {private String storeName;//店名,唯一public String getStoreName() {return storeName;}public void setStoreName(String storeName) {this.storeName = storeName;}}

这里面用到了一个第三方的包,在附件 pinyin4j-2.5.0.jar (184.5 KB)下载次数: 2

如果觉得《中英文混合排序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。