示例
示例

想要制作类似于这种的页面,需要后端传给前端以首字母A-Z分组的中文。

实现步骤:

1.在pom.xml中引入包

<dependency>

    <groupId>com.belerweb</groupId>

    <artifactId>pinyin4j</artifactId>

    <version>2.5.0</version>

</dependency>

pom.xml

2.写一个拼音的工具类

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.BadHanyuPinyinOutFormatCombination

 

public class PinYinUtil{

    public static String getPinYin(String chinese){

        char[] spell = chinese.toCharArray();

        String pinYin = "";

        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();

        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

        for(int i= 0; i<spell.length(); i++){

            if(spell[i]>128){

                try{

                    pinYin += PinyinHelper.toHanyuPinyinStringArrat(spell[i],defaultFormat)[0].chartAt(0);

                }catch(BadHanyuPinyinOutputFormatCombination e){

                     e.printStackTrace();

                }

            }else{

                 pinYin += spell[i]

            }

        }

        return pinYin;

    }

}

PinYinUti.java

3.调用

public Map<String, List<Organization>> sortOrg2Map(List<Organization orgList>){

    Map<String,List<Organization>> map =  new TreeMap<String,List<Organization>>();

    for(int i= 0; i<=26; i++){

        String word = String.valueOf((char)(96+i)).toUpperCase();

        //循环找出首字母一样的数据

        List<Organization> list = new ArrayList<Organization>();

        Iterator<Organization> it = orgList.iterator();

        while(it.hasNext()){

            Organization org = it.next();

            if(word.equalsIgnoreCase(PinYinUtil.getPinYin(org.getOrgName()))){

                list.add(org);

                it.remove();

            }

        } 

        map.put(word.list);

    }

    List<Organization> list = new ArrayList<Organization>();

    for(Organization org:orgList){

         list.add(org);    

     }

     map.put("#",list);

     return map;

}

 

public class Organization implements Serializable{

     private static final long serialVersionUID = 1L;

     private String id;

     private String orgName;

}

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。