1.引入pinyin4j 包
<!-- 汉字转拼音 -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
</dependency>
2. 继承Comparator
public class PinyinCompare implements Comparator<AreaListVo>{
private String ToPinYinString(AreaListVo contacts){
String str=contacts.getAreaname();
StringBuilder sb=new StringBuilder();
String[] arr=null;
if(str.startsWith("重庆")){
return "chong2chong2qing4"; //处理多音字,按需进行排序
}else{
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();
}
@Override
public int compare(AreaListVo o1, AreaListVo o2) {
return ToPinYinString(o1).compareTo(ToPinYinString(o2));
}
public static void main(String[] args) {
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);
}
}
}
System.out.println(sb.toString());
}
}
3. 排序方法
public List<AreaListVo> pingYinSort(List<AreaListVo> list) {
Collections.sort(list, new PinyinCompare());
return list;
}