一、实现思路:

1、将数据list 进行排序Collections,排序后是按照汉字字母排序的
2、循环找出26个字母,以字母为key,以list中相同首字母的数据为值(集合)

二、代码实现:

// 这里需要用到 pinyin4j-2.5.0.jar 这个汉字转拼音的jar包

/**
* 获取汉字串拼音,英文字符不变
*/
public static String getFullSpell(String chinese) {
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString();
} /**
* 将集合数据按照汉字首字母分组排序
*/
public static Map<String, Object> screenManufacturer(List<String> list) {
try {
Collator com = Collator.getInstance(java.util.Locale.CHINA);
// 按字母排序
Collections.sort(list, com);
// 输出26个字母
Map<String, Object> map = new TreeMap<>();
for (int i = 1; i < 27; i++) {
String word = String.valueOf((char)(96 + i)).toUpperCase();
// 循环找出 首字母一样的数据
List<String> letter = new ArrayList<>();
for (String str : list) {
String pybf = getFullSpell(str);
String zm = pybf.substring(0, 1);
if (word.equals(zm)) {
letter.add(str);
}
}
map.put(word, letter);
}
return map;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

样例:

{
"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": ["张三"]
}

最新文章

  1. appium的几点总结
  2. [源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流
  3. react.js 多个组件集成示例
  4. 【Hadoop】Hive HSQ 使用 &amp;&amp; 自定义HQL函数
  5. Centos 6安装python3.5
  6. 206.反转单列表 Reverse Linked List
  7. 修改EF的默认约定模型的方式
  8. css3制作导航栏
  9. Openjudge-计算概论(A)-计算三角形面积
  10. 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 5
  11. hibernate和mybatis区别
  12. 第一个程序python.py
  13. 把玩爬虫框架Gecco
  14. 修改hots指向
  15. centos6.6安装Elasticsearch
  16. list_test
  17. dp填表法,刷表法
  18. 【转载】ASP.NET MVC的过滤器【Filters】
  19. valueError: This solver needs samples of at least 2 classes in the data, but the data contains only one class: 0
  20. overflow: auto 图片自适应调整

热门文章

  1. Unity旧版图集和新版图集
  2. [django]钩子函数的一些细节(clean)
  3. cudnn Backend API注意事项
  4. wake on lan sender 2.0.8
  5. Sup, inf convolution for convex functions
  6. matlab求解器的选择
  7. Office &amp; WPS 基础篇
  8. 2020ICPC沈阳I - Rise of Shadows
  9. JAVA远程调用 webService
  10. createrepo 命令详解