Java 实现汉字按照首字母分组排序

记录一下,实现汉字按照首字母分组排序,如下图:

Java 实现汉字按照首字母分组排序_第1张图片

一、实现思路:

1.将数据list 进行排序Collections,排序后是按照汉字字母排序的

2、循环找出26个字母,以字母为key,以list中相同首字母的数据为值(集合)

二、代码实现

这里需要用到pinyin4j-2.5.0.jar这个汉字转拼音的jar包

1、这个是汉字转拼音的方法

/**
     * 获取汉字串拼音,英文字符不变
     * @param chinese 汉字串
     * @return 汉语拼音
     */
    public static String getFullSpell(String chinese) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > 128) {
                try {
                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pybf.append(arr[i]);
            }
        }
        return pybf.toString();
    }

2、关键实现代码

Java 实现汉字按照首字母分组排序_第2张图片

3、测试调用

Java 实现汉字按照首字母分组排序_第3张图片

控制台输出:

 {
    "A": ["阿拉伯"],
    "B": [],
    "C": [],
    "D": [],
    "E": [],
    "F": [],
    "G": [],
    "H": [],
    "I": [],
    "J": [],
    "K": [],
    "L": ["李四", "李五"],
    "M": [],
    "N": [],
    "O": [],
    "P": [],
    "Q": [],
    "R": [],
    "S": [],
    "T": [],
    "U": [],
    "V": [],
    "W": [],
    "X": [],
    "Y": [],
    "Z": ["张三"]
}

你可能感兴趣的:(Java)