项目中遇到了要排序的问题,我的解决办法是这样的:
首先我的数据库中保存的某个字段是汉字,要根据这个字段排序,按照通常的情况,直接在数据库中select数据的时候直接排序了,汉字不行,所以就用到了java自带的Collections.sort:
Collections.sort(list, new ComparatorPinYin());声明list为一个<String> 集合:
自定义一个内部类:作用是把汉字转换为拼音的字符串数组,(比如:{“zhangsan”,“lisi”,“wangwu”}) compare中参数的数据都是list集合中的,注意Lits集合的类型 和 自定义类的类型都要一样,现在我这里都是String
static class ComparatorPinYin implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return ToPinYinString(o1).compareTo(ToPinYinString(o2));
}
private String ToPinYinString(String str) {
StringBuilder sb = new StringBuilder();
String[] arr = null;
for (int i = 0; i < str.length(); i++) {
arr = PinyinHelper.toHanyuPinyinStringArray(str.charAt(i));
if (arr != null && arr.length > 0) {
for (String string : arr) {
sb.append(string);
}
}
}
return sb.toString();
}
}
其中:PinyinHelper.toHanyuPinyinStringArray(str.charAt(i)); 是用的一个jar包,名字叫pinyin4j-2.5.0.jar