1.数据一般在数据库中,将数据查询出来,按照名字字段排下序。
order by convert(trim(g.procedure_name) using gbk) asc
2.下载jar包(pinyin4j-2.5.0.jar),,放入webContent的web_inf—lib下,然后构建路径。就可以了
需要用到jar包里的:
获取中文第一个字的首字母:
String 首字母= PinyinHelper.toHanyuPinyinStringArray(String.charAt(0));
3.设置26个字母的数组;
String[] b ={“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”, “#” };
4.For(b){
For(名字list){
//获取每一行的名字 首字母;
String 首字母= PinyinHelper.toHanyuPinyinStringArray(String.charAt(0));
If(首字母.equalsIgnoreCase(b[i].toString())){
存到map;放入list
}
}
if(!list.isEmpty()){
hashMap.put(b[i], list);
}
}
附:个人工作时写的:
List<Object[]> detailList = this.getDBParserAccess().selectList(dbSession,selSql+whereSql,p2vs);
String[] b = { "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", "#" };
for(int i = 0;i<b.length;i++){
List<Map<String,Object>> list = new ArrayList<>();
for(Object[] o :detailList){
String pinYinHeadChar = ChineseToEnglish.getPinYinHeadChar(o[1].toString());//可以不用ChineseToEnglish类,直接用PinyinHelper,下一行代码
// String[] szm = PinyinHelper.toHanyuPinyinStringArray(o[1].toString().charAt(0));
// String pingYin = ChineseToEnglish.getPingYin(o[1].toString());
if(pinYinHeadChar.substring(0,1).equalsIgnoreCase(b[i].toString())){
HashMap<String,Object> map = new HashMap<>();
map.put(“id”,o[0]);
map.put(“person_name”,o[1]);
map.put(“phone_number”,o[2]);
list.add(map);
}
}
if(!list.isEmpty()){
hashMap.put(b[i], list);
}
}
引入了一个java类:
ChineseToEnglish.java ,这个类中有许多可以借鉴的方法,所以引入进来了,其实我这个实例可以不用引这个类,只是为了以后扩展使用才引的。
ChineseToEnglish.java :https://pan.baidu.com/s/1SVSuikDP5-xE5J_oLkb5qg 提取码:ld62
pinyin4j-2.5.0.jar:https://pan.baidu.com/s/1PjSAjBUNpuEAmvOX5LvXgA 提取码:66g3