MYSQL和JAVA中将中文汉字按照拼音首字母排序

一、MYSQL将中文汉字按照拼音首字母排序

数据库使用的字符编码是utf8_general_ci,如下

sql 复制代码
ORDER BY CONVERT(表名.字段名 USING gbk) COLLATE gbk_chinese_ci ASC;

若是表查询,CONVERT中可以不添加表名。

查询结果如下:

二、JAVA中将中文汉字按照拼音首字母排序

1.String集合排序

java 复制代码
		List<String> list = new ArrayList<>();
		list.add("北京");
		list.add("上海");
		list.add("广州");
		list.add("深圳");
		list.add("长沙");
		Comparator comparator = Collator.getInstance(Locale.CHINA);
		list.sort(comparator::compare);
		list.stream().forEach(System.out::println);

运行结果:

2.对象集合排序

java 复制代码
		List<City> cityList = new ArrayList<>();
		cityList.add(new City(1, "北京"));
		cityList.add(new City(2, "上海"));
		cityList.add(new City(3, "广州"));
		cityList.add(new City(4, "深圳"));
		cityList.add(new City(5, "长沙"));
		// 获取中文环境
		Comparator comparator = Collator.getInstance(Locale.CHINA);
		// 排序
		Collections.sort(cityList, (e1, e2) -> {
		    return comparator.compare(e1.getName(), e2.getName());
		});
		
		cityList.stream().forEach(System.out::println);

运行结果:

相关推荐
codergjw3 分钟前
常见面试题
java
咕噜企业分发小米4 分钟前
如何平衡服务器内存使用率和系统稳定性?
java·服务器·前端
李子园的李5 分钟前
函数式编程与传统编程的对比——基于java
java
爬山算法6 分钟前
Netty(13)Netty中的事件和回调机制
java·前端·算法
一分半心动10 分钟前
lnmp架构 mysql数据库Cannot assign requested address报错解决
linux·mysql·php
南极企鹅25 分钟前
Gson转义特殊字符
java
ChristXlx27 分钟前
Linux安装mysql(虚拟机适用)
linux·mysql
Mr_Xuhhh41 分钟前
第一部分:类和对象(中)— 取地址运算符重载
java·开发语言
Selegant44 分钟前
告别传统部署:用 GraalVM Native Image 构建秒级启动的 Java 微服务
java·开发语言·微服务·云原生·架构