java中實現漢語拼音排序

來源:互聯網
上載者:User

標籤:

Java提供的Collator拼音排序中,發現“怡”字總排在最後解決方案如下:
實現Comparator介面,利用pinyin4j將要比較的字串轉化成相應的拼音字串,然後再比較。

所需jar包:pinyin4j-2.5.0.jar;:http://pinyin4j.sourceforge.net/
import java.util.Arrays;  import java.util.Comparator;  import net.sourceforge.pinyin4j.PinyinHelper;  public class PinYinSort {      public static void main(String[] args) {          String[] arr={ "王二六","張三", "李四", "王五","趙六", "JAVA", "123","怡情"};          Arrays.sort(arr,new ComparatorPinYin());          for (String string : arr) {              System.out.println(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();          }      }  }  

排序結果:
Java代碼

JAVA  123  李四  王二六  王五  怡情  張三  趙六  

java中實現漢語拼音排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.