![示例](https://img-blog.csdnimg.cn/20190509112217565.png)
想要制作类似于这种的页面,需要后端传给前端以首字母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; }
|