在很多情况下,我们都会用到对自定义数据结构的排序,而最多的实际排序依据是对字符串的排序。
举个例子:
联系人排序,contacts是一个我们自己定义的数据结构,里面有两个参数,name和tel,我们要根据name的拼音排序,首先要把汉字转成拼音,然后根据拼音进行排序。
第一步: 汉字转拼音
资料(第二种方法貌似对”亳州”的”亳”识别有误): java程序将汉字转成拼音的两种方法
第二步: 根据拼音对数据结构排序
首先需要给数据结构制作一个比较的工具类:
public class PinyinComparator implements Comparator<ContactsEntry> {
public int compare(ContactsEntry o1, ContactsEntry o2) {
if (o1.getSort_key().equals("@")
|| o2.getSort_key().equals("#")) {
return -1;
} else if (o1.getSort_key().equals("#")
|| o2.getSort_key().equals("@")) {
return 1;
} else {
return o1.getSort_key().compareTo(o2.getSort_key());
}
}
}
然后通过Collections的sort方法来排序:
Collections.sort(mCities, mComparator);
这样mCities里面的数据就根据PinyinComparator的排序规则排序了。