汉字按照拼音排序

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;
}

猜你喜欢

转载自blog.csdn.net/qing_mei_xiu/article/details/78135925
今日推荐