一、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);
运行结果: