public class CollatorComparator implements Comparator {
Collator collator = Collator.getInstance(java.util.Locale.CHINA);
public int compare(Object element1, Object element2) {
CollationKey key1 = collator.getCollationKey(((InvitePeopleConnect) element1).getPeopleName());
CollationKey key2 = collator.getCollationKey(((InvitePeopleConnect) element2).getPeopleName());
return key1.compareTo(key2);
}
}
Collections.sort(ConPeopleList, new CollatorComparator()); 调用
private ArrayList<InvitePeopleConnect> ConPeopleList=new ArrayList<InvitePeopleConnect>();
这里只是简单的不使用外部jar的,排序的结果是先数字 然后字母 然后中文 字母喝中文分别按照字母排序
如果调用pinyin4j。jar
public class CollatorComparator implements Comparator {
//Collator collator = Collator.getInstance(java.util.Locale.CHINA);
Collator collator = Collator.getInstance(java.util.Locale.CHINA);
public int compare(Object element1, Object element2) {
//CollationKey key1 = collator.getCollationKey(((InvitePeopleConnect) element1).getPeopleName());
//CollationKey key2 = collator.getCollationKey(((InvitePeopleConnect) element2).getPeopleName());
CollationKey key1 = collator.getCollationKey(getAllFirstLetter(((InvitePeopleConnect) element1).getPeopleName()));
CollationKey key2 = collator.getCollationKey(getAllFirstLetter(((InvitePeopleConnect) element2).getPeopleName()));
return key1.compareTo(key2);
}
}
public String getAllFirstLetter(String str) {
String convert = "";
for (int j = 0; j < str.length(); j++) {
char word = str.charAt(j);
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
convert += pinyinArray[0].charAt(0);
}else {
convert += word;
}
}
return convert;
}