中国語の文字列は最初の文字のピンインで並べ替えられます。

2093 ワード

ここでピニャン4 jを使いました。http://pinyin4j.sourceforge.net/です。
テストケース:
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

import net.sourceforge.pinyin4j.PinyinHelper;
      
/**      
 * @author <a href="mailto:[email protected]">David</a>     
 * @version 1.0      
 */

public class PinyinComparator implements Comparator {

 private String concatPinyinStringArray(String[] pinyinArray) {    
        StringBuffer pinyinStrBuf = new StringBuffer();    
   
        if ((null != pinyinArray) && (pinyinArray.length > 0)) {    
            for (int i = 0; i < pinyinArray.length; i++) {    
                pinyinStrBuf.append(pinyinArray[i]);    
            }    
        }    
        String outputString = pinyinStrBuf.toString();    
        return outputString;    
    } 
 public int compare(Object o1, Object o2) {
  char c1 = ((String) o1).charAt(0);    
        char c2 = ((String) o2).charAt(0);   
       // System.out.println("c1--------->"+c1+"----c2--------------->"+c2);
        return concatPinyinStringArray(    
                PinyinHelper.toHanyuPinyinStringArray(c1)).compareTo(    
                concatPinyinStringArray(PinyinHelper    
                        .toHanyuPinyinStringArray(c2))); 
 }
 
 public static void main(String[] args) {
   String[] data = { "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ",    
                 "  ", "  ", "  " };    
    
         List<String> list = Arrays.asList(data);    
         Arrays.sort(data, new PinyinComparator());    
         System.out.println(list); 
 }

}