前后端分离写法:

pom.xml文件需要导pinyin4j包:

<!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version>
</dependency>

service层:

package cn.tcmp.service.pinyin;import cn.tcmp.entity.Vehicle;import java.util.List;
import java.util.Map;/*** Created by IntelliJ IDEA.* User: AnRan* Date: 2019/9/20*/
public interface PinYinService {//字符串转字母   然后首字母大写String getPinYinHeadChar(String str);//遍历List集合  转字母并存进Map里Map<String,List<Vehicle>> getMap(List<Vehicle> list);}

service实现层:

package cn.tcmp.service;import cn.tcmp.entity.Vehicle;
import cn.tcmp.service.pinyin.PinYinService;
import com.alibaba.dubbo.config.annotation.Service;
import net.sourceforge.pinyin4j.PinyinHelper;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** Created by IntelliJ IDEA.* User: AnRan* Date: 2019/9/20*/
@Service
public class PinYinServiceImpl implements PinYinService {private static Map<String,List<Vehicle>> map = new HashMap<>();//提取字符串首字母@Overridepublic String getPinYinHeadChar(String str) {String convert = "";for (int j = 0; j < str.length(); j++) {char word = str.charAt(j);String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);if (pinyinArray != null) {convert += pinyinArray[0].charAt(0);} else {convert += word;}}return convert.substring(0,1).toUpperCase();}//首字母为Key list集合为Value 存到Map中@Overridepublic Map<String, List<Vehicle>> getMap(List<Vehicle> list) {map.clear();for (Vehicle str : list) {if(map.containsKey(getPinYinHeadChar(str.getVehicleName()))) {List<Vehicle> list2 = map.get(getPinYinHeadChar(str.getVehicleName()));list2.add(str);}else {List<Vehicle> strlist = new ArrayList<>();strlist.add(str);map.put(getPinYinHeadChar(str.getVehicleName()).toUpperCase(), strlist);}}return map;}
}

Controller层:

package cn.tcmp.controller.qianDuan;import cn.tcmp.entity.DataDictionary;
import cn.tcmp.entity.Vehicle;
import cn.tcmp.service.CarQicheService;
import cn.tcmp.service.dataDictionary.DataDictionaryService;
import cn.tcmp.service.pinyin.PinYinService;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.ArrayList;
import java.util.List;
import java.util.Map;/*** Created by IntelliJ IDEA.* User: AnRan* Date: 2019/9/20*/
@Controller
@RequestMapping(value = "index")
public class CarIndexController {@Referenceprivate CarQicheService qicheService;@Referenceprivate PinYinService pinYinService;/*** 查询品牌 按首字母分类 到首页* @return*/@RequestMapping(value = "queryVehicle",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})@ResponseBodypublic String queryVehicle(){List<Object> arrayList = new ArrayList<>();//所有的品牌List<Vehicle> vehicles = qicheService.queryVehicleByVehicleName2("");/*for (Vehicle vehicle : vehicles) {System.err.println("品牌>>>>>"+vehicle);}*///所有的车系List<Vehicle> list = qicheService.queryAllVehiclebyChexi();Map<String, List<Vehicle>> map = pinYinService.getMap(vehicles);/*for (Vehicle vehicle : list) {System.err.println("车系>>>>>"+vehicle);}for(Map.Entry<String, List<Vehicle>> entry : map.entrySet()){System.out.println("键 key :"+entry.getKey()+" 值value :"+entry.getValue());}*///把品牌和车系放进集合里arrayList.add(list);arrayList.add(map);//返回return JSON.toJSONString(arrayList);}}

该方法返回一个json串--json里存一个list集合,有两个值:1.车系的List---2.刚刚生成的品牌Map

由于是一个ajax方法,所以页面需要用js解读这个json串


//页面js部分代码
window.onload=pinpaiUL();function pinpaiUL(){$.post("/index/queryVehicle",function(result){//获取品牌的Map集合 并遍历var pinpai = result[1];$.each(pinpai,function (key,value) {//遍历Map中的value>>List集合//把首字母品牌放进去$("#youDian").append("<dl class='fore"+ key +"'><dt><a href='javascript:'>"+key+"</a></dt><dd id='dd"+key+"'></dd></dl>");$.each(value,function (i,val) {console.log("val>>"+val);//把8个品牌放到ul里if(val.vehicleID <= 8){$("#pinPaiUL").append("<li><a href='javascript:'>"+val.vehicleName+"</a></li>");}$("#dd"+key).append("<em><a href=''>"+val.vehicleName+"</a></em>");})})})
}

<-----------------------------------------以下是K哥的写法,暂时看不懂,有待以后研究!-------------------------------------------------->


/**
*以下为大佬K哥的写法 本人不太明白 看不懂
*/
//controller里直接写
//List<PinPai> list = this.service.queryAllPinPai();List<PinPai> list = new ArrayList<>();
list.add(new PinPai("玛莎拉蒂"));
list.add(new PinPai("阿斯顿马丁"));
list.add(new PinPai("宾利"));
list.add(new PinPai("劳斯莱斯"));//第一种写法
//Map<String,List<String>> result = list.stream().map(PinPai::getName).collect(Collectors.groupingBy(name -> {return getPinYinHeadChar(name);}));
//第二种写法
Map<string, List<string>>result=list. stream(). map(PinPai:: getName). collect(Collectors. groupingBy (Main:: getPinYinHeadchar));for(Map.Entry<String,List<String>> entry : result.entrySet()){System.out.println(entry.getKey());System.out.println(entry.getValue());
}//输出结果为
A
[阿斯顿马丁]
B
[宾利]
L
[劳斯莱斯]
M
[玛莎拉蒂]

从数据库取String的值存放到Map中 按汉字首字母排序并输出相关推荐

  1. arcpy读取featureClass中某一字段的所有属性值,存放到list中(地理国情监测)

    arcpy读取featureClass中某一字段的所有属性值,存放到list中:(地理国情监测) import arcpy shppath = r"F:\\IndexData.shp&quo ...

  2. 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序

    [package com.syz;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import ja ...

  3. 乐视云监控数据存放到influxdb中

    3.9     监控.告警系统 监控报警我们分PaaS平台和业务应用两大类. PaaS平台主要聚焦在基础设施和LeEngine的各个服务组件的监控报警(比如主机CPU,内存,IO,磁盘空间,LeEng ...

  4. 用MySQL数据库来处理中英文取首字母排序

    我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的. 我们建立一个函数: DELIMITER $$ CREATE ...

  5. mysql 中英按字母排序_利用MySQL数据库来处理中英文取首字母排序

    很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需. 我们的联系人列表经常会有按照首字母排序的需求.  这个很方便, 很清晰, 如果不说性能如何 ...

  6. MySQL数据库处理中英文取首字母排序

    需求:联系人列表按照首字母排序 通常如果表设计的时候增加了对应的首字母字段显然很好实现,如果没加,应该如何实现!? 数据库创建 函数 执行以下代码 CREATE DEFINER=``@`` FUNCT ...

  7. 【如何通过汉字首字母拼写查询数据】mysql数据库汉字首字母获取查询或通过ES插件elasticsearch-analysis-pinyin进行汉字首拼查询

    一.mysql数据库汉字首字母获取查询 1.汉字提取首字母 get_first_pinyin_char: 此函数是将一个中文字符串的第一个汉字转成拼音字母 (例如:"李"-> ...

  8. oracle 中文拼音取首字母,ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数...

    当前位置:我的异常网» 数据库 » ORACLE依据中文拼音首字母排序.取得中文拼音首字母 ORACLE依据中文拼音首字母排序.取得中文拼音首字母函数 www.myexceptions.net  网友 ...

  9. 数据库实现汉字首字母简拼全拼

    MySQL数据库实现 1.将一个中文字符串的第一个汉字转成拼音字母 (例如:"中国"->Z),包括特殊字符处理,可以进行动态添加 CREATE FUNCTION `frist ...

最新文章

  1. WCF - Session 剖析
  2. 关于Python 3.9,那些你不知道的事
  3. 用C语言解“二分法求多项式单根”题
  4. WPF DispatcherTimer(定时器应用) 无人触摸60s自动关闭窗口
  5. 任务计划命令 linux,linux执行一次性任务计划at命令
  6. 如何用Pygame写游戏(十五)
  7. Protobuf的C++使用笔记
  8. Vue基本指令(详细,好理解,示例代码)
  9. Windows安装MySQL 5.7.19及相关问题处理
  10. Activiti学习笔记(六)Activiti的流程引擎API和服务
  11. Unity3D:粒子特效(Particle System)播放序列帧动画
  12. ListView的优化
  13. dagger2简单使用与理解笔记
  14. Oracle数据库安装教程--Oracle19c DataBase
  15. 同步软件Activesync4.5遇到的一些棘手问题
  16. nodpad 设置护眼_最详细的保护眼睛的方法,总有一个适合你。
  17. C语言10.10,查找英文的星期几
  18. 实例讲解spark在京东智能供应链预测系统的应用
  19. Go设置一个工作区打开多个项目
  20. 【PP】PP 模块配置

热门文章

  1. 【DS实践 | Coursera】Assignment3 | Introduction to Data Science in Python
  2. 程序员双十一剁手指南(2020)
  3. GD32 ADC功能及代码详解
  4. nodejs入门之数据爬虫
  5. 我用 pyhton 做了款可开淘宝店赚钱的工具
  6. python爬虫requests的库使用详解
  7. 孙陶然:公司要与员工分享
  8. 百度离线瓦片地图原理解析(附C#源码,可下载带样式地图)
  9. 关于a标签点击Focus状态下背景颜色区域不够的问题
  10. RGB及颜色相关概念