SpringBoot-中文按首字母分組分類

項目需要用到名字選擇,但是太多了需要按照首字母排序。_

導入pinyin4j依賴

<dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.0</version>
</dependency>

PinYinUtil拼音類實現代碼

package com.example.logSystem.pojo;
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.exception.BadHanyuPinyinOutputFormatCombination;



public class PinYinUtil {
                /**
              * 獲取漢字串拼音,英文字符不變
              * @param chinese 漢字串
              * @return 漢語拼音
              */
public 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();
}
}

借鑑這位大佬的利用類

利用

List<User> list1= userMapper.selectUser();
        List<Map<String,Object>> list2=new ArrayList<>();
        int sum=0;
        for(int i=1;i<=26;i++){           //查出來名字的長度
                Map<String,Object> map=new HashMap<>();
                String big = String.valueOf((char)(96+i)).toUpperCase();    //轉大寫
                String little = big.toLowerCase();
                //轉小寫
                List<Map<String,Object>> list3=new ArrayList<>();
                for(int j=0;j<list1.size();j++){        //遍歷查出來的名字
                    PinYinUtil pinyin = new PinYinUtil();
                    String zm = pinyin.getFullSpell(list1.get(j).getTeachername().substring(0,1)).substring(0,1);      //截取首字母
                    if(big.equals(zm)||little.equals(zm)){ //判斷大小寫
                        Map<String, Object> map1 = new HashMap<>();
                        map1.put("text", list1.get(j).getTeachername());
                        map1.put("id", sum);
                        sum++;
                        list3.add(map1);
                    }
                }
                if(list3.size()!=0) {
                    map.put("text", big);           //當前是哪個字母
                    map.put("children", list3);
                    list2.add(map);
                }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章