java按照汉字拼音首字母排序

实现按照汉字拼音字母排序的方法有两种:
一,就是在用java代码处理
要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境:
这里用到了Collator类,此类实现了Comparator接口,用他的getInstance就可以用指定的语言环境来构造一个Collator对象:
java按照汉字拼音首字母排序_第1张图片
然后用如下语句创建Comparator:

Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);

在这里插入图片描述

完整的代码如下:

import java.text.Collator;  
import java.util.*;  
import java.util.Comparator;  
public class cpm {  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);  
        String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};  
        List<String> list = Arrays.asList(newArray);
        Collections.sort(list, com); 
        for(String i:list){  
            System.out.print(i+"  ");  
        }
    }  

}

就可以了,但是该方法要注意集合中输字符串,如果是对象就不行了,集合中要是对象就采取第二种方法,在MySQL的sql语句中处理,处理方法如下:
二:MySQL的处理方法:
mysql数据库中,若需要按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序;
mysql对其排序分两种情况:
1、存储姓名的字段采用:GBK字符集
GBK内码编码时,其本身就采用了拼音排序的方法,
“查询语句+ order by name asc”--------- 查询结果按照姓氏的升序排序

2、存储姓名的字段采用: utf8字符集
排序的时候需要对字段进行转码。
“查询语句+order by convert(name using gbk) asc”------查询的结果也是按照姓氏的升序排序

mysql中的字符集不一样方法也不一样,处理的时候一定要注意!!!!!!

参考:https://blog.csdn.net/u014520745/article/details/42191945

https://blog.csdn.net/weixin_43307577/article/details/87942270

你可能感兴趣的:(java基础)