需求背景
最近在做的一个项目里,有需要展示我的通讯录功能,与前端沟通结果是我将通讯录里所有联系人全部在接口里返给他们,当然返回的数据格式是按照首字母已经归类好了的,整体返回对象是一个Map<String,List>,key值就是首字母firstChar,value是所有首字母的集合list
具体实战
pinyinUtil
在录入通讯录的时候, 根据录入的中文服务端在入库的时候取到中文对应的首字母存到表里,这里有一个jar包已经有很好的封装方法。首先要引入
<!--汉语拼音-->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
然后看这里提供的两个方法,一个是将中文转拼音,这个有可能有这样的业务场景,另一个就是根据输入字符串取首字母了,里面逻辑还可以根据具体需求进行修改,我这里是将特殊字符和数字全部按照#号处理,消防微信做的
import lombok.extern.slf4j.Slf4j;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.