springboot返回按照首字母分组排序数据
最终需要实现的效果图如下:
一、实现思路
1、将数据list 进行排序Collections,排序后是按照汉字字母排序的。
2、循环找出26个字母,以字母为key,以list中相同首字母的数据为值(集合)。
二、开发准备
1、这里需要用到pinyin4j-2.5.0.jar这个汉字转拼音的jar包,
大家可点击 pinyin4j-2.5.0.jar 下载我上传到CSDN的jar包资源;
2、将该jar包导入到maven项目中
1)在项目中新建lib文件,将jar包复制粘贴到该文件中
2)在pom文件中进行依赖配置
<dependency><groupId>pinyin4j</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version><scope>system</scope><systemPath>${project.basedir}\lib\pinyin4j-2.5.0.jar</systemPath></dependency>
三、代码实现
1、这个是汉字转拼音的方法
/*** 字符串拼音转换工具类*/
public class PinyinUtil {/*** 获取汉字串拼音,英文字符不变* @param chinese 汉字串* @return 汉语拼音*/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();}}
2、业务代码使用实例
我这边最终返回的是已实体类为主题的数据模型,但是拼音处理工具只能处理字符串,所以我对于这一块进行了转化,采用lambda表达式实现。
public List<a> findParkList(String search){List<a> b = new ArrayList<>();//查询所有园区List<d> list = dMapper.findByCommName(search);//将园区按照首字母进行分组if (list != null && list.size() > 0) {Comparator com = Collator.getInstance(Locale.CHINA);//按字母排序Collections.sort(list.stream().map(d::getCommunityName).collect(Collectors.toList()),com);//输出26个字母for (int i = 1; i <= 26; i++) {String word = String.valueOf((char)(96 + i)).toUpperCase();//循环找出首字母一样的数据List<d> dList = new ArrayList<>();for (d e : list) {String zm = PinyinUtil.getFullSpell(e.getCommunityName()).substring(0,1);if (word.equals(zm)){dList.add(e);}}if (dList != null && dList.size() > 0) {a c = new a();c.setInitials(word);c.setFrameParkList(dList);b.add(c);}}}return b;}
或参考
此段代码因涉及到业务代码,部分代码进行了修改处理。
四、测试
调用接口,控制台输出如下
{"content": [{"frameParkList": [{"communityName": "安大法官的双方各","createName": "","datasourceId": "","id": "220A2878E078rfvcd1EE899A1E3"}],"initials": "A"},{"frameParkList": [{"communityName": "白风风光光","createName": "","datasourceId": "","id": "220A2878E0C14F1EE877A1E3"}],"initials": "B"}
],"message": "","status": "success"
}
#@lehao#
帮助到您请点赞关注收藏谢谢!!
springboot返回按照首字母分组排序数据相关推荐
- php实现通讯录按字母分组,iOS - 通讯录开发,名字按拼音首字母分组排序
应项目需要,需添加一个自定义的通讯录,所以需要对联系人按名字的首字母进行排序.以下方法已经封装好,复制到项目中直接可以使用. 该方法是使用UILocalizedIndexedCollation来进行本 ...
- 城市名称按首字母分组排序,并实现多音字处理
一.需求 将城市列表(中文)按照首字母分组排序,以26个字母的顺序进行分组. 传统的解决方式使用如下pinyin4j来解决: <dependency><groupId>com. ...
- 通讯录c语言编程按字母分组,iOS - 通讯录开发,名字按拼音首字母分组排序
应项目需要,需添加一个自定义的通讯录,所以需要对联系人按名字的首字母进行排序.以下方法已经封装好,复制到项目中直接可以使用. 该方法是使用UILocalizedIndexedCollation来进行本 ...
- java8 stream 首字母分组排序
stream 根据首字母分组排序 //获取集合 List<String> nameList=saleModelService.findExistBrandsInTable(); Map&l ...
- PHP利用ICU扩展intl快速实现汉字转拼音以及按拼音首字母分组排序
ICU(International Components for Unicode)里提供了transliterator(直译器), 可以很方便把其他语言(比如简体中文)转为拉丁文表示: http:// ...
- php根据汉字首字母分组,利用PHP获取汉字首字母并且分组排序详解
前言 本文主要给大家介绍了关于PHP获取汉字首字母并分组排序的相关内容,因经常我们在做项目的时候,会有按首字母排序的需求 比如: 美团的城市选择 http://www.meituan.com/inde ...
- Java实现根据拼音首字母的排序
1.项目 手机APP端要对企业列表按企业名称首字母(如果企业名是英文的就按)进行分类排序,效果如下: 2.实现过程 2.1 首先引入项目的pinyin4j-2.5.0.jar包. 这个jar的下载地址 ...
- 数组根据某字段首字母拼音排序并返回新的数组
原本的数组长这样: const data = [{name: '测试数据1',sortName: '一个需要排序的数据'},{name: '测试数据2',sortName: '二个需要排序的数据'} ...
- Js实现中文排序,并根据拼音首字母分组
Js实现中文排序,并根据拼音首字母分组 const pySegSort=(arr) =>{if (!String.prototype.localeCompare) return nulllet ...
最新文章
- python魔法方法详解
- 剑指 Offer 06. 从尾到头打印链表(C语言)
- halcon/c++接口基础 之内存管理
- C语言 二维数组遍历 - C语言零基础入门教程
- Gem5全系统FS(full system)测试
- ddos工具linux,DDoS常用工具大全
- BZOJ1861: [Zjoi2006]Book 书架
- 学会这两个技巧!让你的Mac文件共享超简单
- 基于统计语言模型的分词方法
- 华罗庚杯成绩查询2021高考成绩,第22届华杯赛入围决赛分数线已定,明天起可查询成绩...
- html如何添加隶书字体,word如何添加隶书字体?
- pta 计算圆周率(C语言实现)
- 计算机表格应用试题及答案,2016年职称计算机考试EXCEL练习试题及答案
- juniper:opencontrail/contrail 作为SDN解决方案
- 线性代数拾遗(4)—— 非齐次线性方程组通解的结构
- Semi-Supervised Semantic Segmentation with Cross-Consistency Training论文笔记
- NumPy与ndarray简介
- 各种抗锯齿模式略解:SSAA MSAA CSAA CFAA
- 对数线性模型(Log-Linear Model)一种判别式模型的创建框架
- 专门除COD有机物的树脂工艺
热门文章
- 转载:Linux下启动和关闭Weblogic(管理服务器+被管服务器)
- ios webView 打开 ppt pdf
- EXCEL中条件计数函数DCOUNT的用法
- Find–atime –ctime –mtime的用法与区别总结
- 实践篇 | 构建下一代云上数据湖,助力车企数字化转型
- ucloud nginx 压测
- 决策树简单介绍(二) Accord.Net中决策树的实现和使用
- 深入理解NLP Subword算法:BPE、WordPiece、ULM ,sentencepiece
- 【神经网络压缩加速之剪枝二】Pruning Filters for Efficient ConvNets
- 服务器dhcp服务没有响应,dhcp服务器没有响应