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);

运行结果:

相关推荐
摇滚侠几秒前
《On Java 中文版 基础卷》阅读笔记 初始化和清理 08
java·开发语言·笔记
海鸥-w15 分钟前
Redis 配置与排错说明
java·数据库·redis·bootstrap
XiYang-DING25 分钟前
P4009.和为K的子数组个数 & P5522.异或和为 k 的子数组个数
java·开发语言
TinyKey29 分钟前
malloc_debug_notes
java
郭小李30 分钟前
spring @PathVariable 注解用法
java·后端·spring
用户31268748772030 分钟前
Java 锁全景:synchronized、ReentrantLock、ReadWriteLock、StampedLock
java
鱼宵36 分钟前
CSV 怎么做销售报表?Stream 第 9 课:读洗聚排打五段管道一次跑通
java·报表·stream
jaysee-sjc42 分钟前
【苍穹外卖】Day12:工作台数据看板与 Excel 报表导出
java·开发语言·数据库·spring boot·spring·微信·excel
w_zero_one43 分钟前
算法--桶思想
java·开发语言·算法
MetaLite1 小时前
Spring 同一个类里调用 @CacheEvict,为什么缓存没清掉?
java·spring·缓存