Collections.sort(appInfoList, new Comparator<String>() {
@Override
public int compare(String appName1, String appName2) {
//拼音排序
String str1 = getPingYin(appName1);
String str2 = getPingYin(appName2);
return str1.compareTo(str2);
}
});
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 static String getPingYin(String inputString) {
if (TextUtils.isEmpty(inputString)) {
return "#";
}
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] input = inputString.trim().toCharArray();
StringBuilder output = new StringBuilder();
try {
for (char curchar : input) {
if (Character.toString(curchar).matches("[\\u4E00-\\u9FA5]+")) {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(curchar, format);
if (temp == null || temp.length == 0) {
output.append("#");
} else {
output.append(temp[0]);
}
} else if (Character.isAlphabetic(curchar)) {
output.append(Character.toLowerCase(curchar));
} else {
output.append("#");
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return output.toString();
}
public static boolean isChineseCharacter(char ch) {
return '\u4E00' < ch && ch < '\u9FA5';
}