JAVA基础

按照拼音排序:
测试类:
package Test;

import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;





public class MySort{
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("正在");
		list.add("吧啊啊");
		list.add("啊啊啊");
		list.add("看看");
		list.add("aaa");
	/*	第一种方法
	 * Comparator cmp=Collator.getInstance(java.util.Locale.CHINA);
		Collections.sort(list,cmp);*/
		Collections.sort(list, new Comparator<Object>() {
			public int compare(Object o1, Object o2) {
				String str1 = PingYinUtil.getPingYin((String) o1);
				String str2 = PingYinUtil.getPingYin((String) o2);
				return str1.compareTo(str2);
			}
		});
		for(Object obj:list){
			System.out.println(obj);
		}
		
	}
	
	
}


辅助类:
package Test;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.*;
/**
* 拼音工具类
*
* @author 
*/
public class PingYinUtil {
    /**
    * 将字符串中的中文转化为拼音,其他字符不变
    *
    * @param inputString
    * @return
    */
    public static String getPingYin(String inputString) {
        HanyuPinyinOutputFormat format = new
        HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);

        char[] input = inputString.trim().toCharArray();
        String output = "";

        try {
            for (int i = 0; i < input.length; i++) {
                if (java.lang.Character.toString(input[i]).
                matches("[\\u4E00-\\u9FA5]+")) {
                    String[] temp = PinyinHelper.
                    toHanyuPinyinStringArray(input[i],
                    format);
                    output += temp[0];
                } else
                    output += java.lang.Character.toString(
                    input[i]);
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }
}

你可能感兴趣的:(java,.net)