国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java開源類庫pinyin4j的使用

2019-11-17 04:04:49
字體:
來源:轉載
供稿:網友
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

import net.sourceforge.pinyin4j.PinyinHelper;

public class PinyinComparator implements Comparator<Object> {

    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) {

        int length1 = ((String) o1).length();
        int length2 = ((String) o2).length();

        int length = length1 - length2 > 0 ? length2 : length1;

        for (int i = 0; i < length; i++) {
            char c1 = ((String) o1).charAt(i);
            char c2 = ((String) o2).charAt(i);

            String c1topinyin = concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(c1));
            String c2topinyin = concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(c2));

            if ("".equals(c1topinyin) && "".equals(c2topinyin)) {
                if (c1 - c2 == 0) {
                    continue;
                }
                else {
                    return c1 - c2;
                }

            }
            else if ("".equals(c1topinyin) && !"".equals(c2topinyin)) {
                return -1;
            }
            else if (!"".equals(c1topinyin) && "".equals(c2topinyin)) {
                return 1;
            }
            else {
                int pinyinCompareValue = c1topinyin.compareTo(c2topinyin);
                if (pinyinCompareValue == 0) {
                    if (c1 - c2 == 0) {
                        continue;
                    }
                    else {
                        //同音字按筆畫比較 先不實現  
                        return c1 - c2;
                    }

                }
                return pinyinCompareValue;
            }
        }

        return length1 - length2;
    }

    public static void main(String[] args) {
        String[] data = { "13", "12", "123a", "1234", "123", "張a", "李四", "張a1", "章a", "9", "7", "镕", "C", "H", "張A", "重申", "重量" };
        List list = Arrays.asList(data);
        Arrays.sort(data, new PinyinComparator());
        System.out.println(list);
    }

}

測試結果:

[12, 123, 1234, 123a, 13, 7, 9, C, H, 李四, 镕, 張A, 張a, 張a1, 章a, 重量, 重申]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东安县| 浦东新区| 庆元县| 永宁县| 社会| 仙游县| 安阳县| 六安市| 黄骅市| 莲花县| 岳阳市| 礼泉县| 嘉义市| 尼勒克县| 丰都县| 巫溪县| 修水县| 安新县| 祥云县| 大竹县| 淮北市| 吕梁市| 陈巴尔虎旗| 武平县| 忻城县| 朝阳区| 临邑县| 潮州市| 酉阳| 江都市| 沧源| 永宁县| 广平县| 丹阳市| 如皋市| 永年县| 炉霍县| 改则县| 金秀| 山丹县| 屏东市|