第一步:mysql 按中文名字首字母排序
第二步:循环列表,提取中文首字母
第三步:根据列表首字母进行分组
#mysql 按中文名字首字母排序
ORDER BY CONVERT ( 名字字段 USING gbk ) COLLATE gbk_chinese_ci ASC
通过mysql将名字进行排序后,可采用java PinyinHelper获取首字母,循环列表,调用下面的方法,将获取名字的首字母设置到对应实体中,然后根据首字母进行分组
# 循环列表,提取中文首字母
package com.core.PinYinUtils;
import net.sourceforge.pinyin4j.PinyinHelper;
import org.apache.commons.lang3.StringUtils;
public class PinYinUtils{
/**
* 获取姓名首字母
* @param name
* @return 拼音首字母大写
*/
public static String getNamePinYinHeaderChar(String name){
String convert = "";
if(StringUtils.isNotBlank(name)){
char word = name.charAt(0);
String[] pinYinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if ( pinYinArray != null ){
convert += pinYinArray[0].charAt(0);
}
}
return convert.toUpperCase();
}
}