java中汉字排序最简明的介绍
2016-07-02 17:22
302 查看
Java并不能精确的对所有的汉字进行排序,比如对“犇”和“鑫”进行排序,你就会发现结果又乱了!只是因为我们的汉字文化太博大精深了,要做好这个排序确实有点难为Java了。更深层次的原因是Java使用的是 UNICODE 编码,而中文 UNICODE 字符集是来源于 GB18030 的,GB18030 又是从GB2312 发展起来的, GB2312 是一个包含 7000 多个字符的字符集,它是按照拼音排序,并且是连续的,之后的 GBK、GB2312 都是在起基础上扩充而来的,所以要让它们完整排序也就难上加难了。但如果排序对象是经常使用的汉字,使用Collator类排序完全可以满足我们的要求。
使用默认排序算法的例子:
如果需要严格排序,可以使用一些开源项目来自己实现,比如 pinyin4j 可以把汉字转换为拼音,然后我们自己来实现排序算法,不过此时你也会发现要考虑诸如算法、同音字、多音字等众多问题。
pinyin4j下载地址:http://pinyin4j.sourceforge.net/
文章参考:《编写高质量代码:改善Java程序的151个建议》的建议59。
使用默认排序算法的例子:
import java.util.*; import java.text.*; public class SortByChinese { //测试 public void sort() { String[] a1 = {"保定","何子安","于小云","刘帝","刘何保定子安","刘","刘娜","家强","刘博"}; getSortOfChinese(a1); for (int i = 0; i < a1.length; i++) { System.out.println(a1[i]); } } /** * * @param a String[] * @return String[] */ public String[] getSortOfChinese(String[] a) { // Collator 类是用来执行区分语言环境这里使用CHINA Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); // JDKz自带对数组进行排序。 Arrays.sort(a, cmp); return a; } }
如果需要严格排序,可以使用一些开源项目来自己实现,比如 pinyin4j 可以把汉字转换为拼音,然后我们自己来实现排序算法,不过此时你也会发现要考虑诸如算法、同音字、多音字等众多问题。
pinyin4j下载地址:http://pinyin4j.sourceforge.net/
文章参考:《编写高质量代码:改善Java程序的151个建议》的建议59。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 在命令行用 sort 进行排序
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序