`
liukemin
  • 浏览: 8061 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java中文名称的排序

    博客分类:
  • J2SE
阅读更多

由于项目的需要,需要实现中文名称排序的问题,网上找了下,发现这个demo写得非常好:

 

  1. /*  
  2.  * 实现中文名称的排序问题  
  3.  */  
  4. package package1;   
  5.   
  6. import java.text.Collator;   
  7. import java.util.Arrays;   
  8. import java.util.Comparator;   
  9.   
  10. public class SortByChinese {   
  11.        
  12.     /**  
  13.      * @author luodada  
  14.      * @param names  
  15.      * @date 2009-06-16  
  16.      * @return  
  17.      */  
  18.     public static String[] getSortOfChinese(String[] names) {   
  19.         // 强行对某个对象 collection 进行整体排序 的比较函数   
  20.         // Collator 类执行区分语言环境的 String 比较   
  21.         Comparator comp = Collator.getInstance(java.util.Locale.CHINA);   
  22.         Arrays.sort(names, comp);   
  23.         return names;   
  24.     }   
  25.   
  26.     /**  
  27.      * @author luodada  
  28.      * @param args  
  29.      * @date 2009-06-16  
  30.      */  
  31.     public static void main(String[] args) {   
  32.         String[] names = {"卡卡""劳尔""小小罗""小罗""大罗""里贝里""梅西""亨利"};   
  33.         SortByChinese.getSortOfChinese(names);   
  34.         for (int i = 0 ; i < names.length ; i++) {   
  35.             System.out.println(names[i]);   
  36.         }   
  37.     }   
  38. }

 

  输出结果:

 大罗
 亨利
 卡卡
 劳尔
 里贝里
 梅西
 小罗
 小小罗

 

 

昨晚用上面方法处理了下,由于是需要对List排序,需用到Collections.sort()

 

import java.text.CollationKey;
import java.text.Collator;
import java.text.RuleBasedCollator;
import java.util.Comparator;

/**
* 中文比较器,按照拼音排序
*/
@SuppressWarnings("unchecked")
public class CnSortComparator implements Comparator {

    RuleBasedCollator collator;

    public CnSortComparator() {
        collator = (RuleBasedCollator) Collator.getInstance(java.util.Locale.CHINA);
    }

    public int compare(Object obj1, Object obj2) {
        String tempname1 = (String) obj1;
        String tempname2 = (String) obj2;
        CollationKey c1 = collator.getCollationKey(tempname1);
        CollationKey c2 = collator.getCollationKey(tempname2);
        return collator.compare(((CollationKey) c2).getSourceString(),
                ((CollationKey) c1).getSourceString());
    }
}

 

分享到:
评论

相关推荐

    java 中文姓氏 排序

    java 中文姓氏 排序

    JAVA sql 汉字排序

    在Java和SQL中,汉字排序是一项常见的需求,尤其是在处理中文数据时。在SQL Server中,汉字排序涉及到排序规则,这是决定字符串如何存储、比较和排序的关键因素。排序规则定义了字符的位模式,并且规定了在比较字符...

    文件按照window 的排序规则-Java实现

    文件按照window 的排序规则-Java实现。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    java中实现汉字按照拼音排序(示例代码)

    在Java编程中,有时我们需要对包含汉字的数据进行排序,特别是在处理中文名称或文本时。本文主要探讨如何在Java中实现汉字按照拼音进行排序,并提供相关的示例代码。 首先,Java的标准库提供了`java.text.Collator`...

    displaytag中文排序问题解决办法

    然而,在处理中文排序时,DisplayTag可能会遇到问题,因为默认的排序算法可能不支持汉字的正确排序。这个问题通常涉及到字符编码和Unicode排序规则。 解决DisplayTag中文排序问题的关键在于理解Java的字符串比较...

    按拼音排序分组LIST

    本示例"按拼音排序分组LIST"着重于展示如何在Android应用中实现一个列表(List),该列表中的元素按照汉字的拼音首字母从A到Z进行排序,并且用户可以点击每个字母来筛选显示相应首字母的数据。这个功能在很多应用...

    按姓氏笔画排序.rar

    在中文姓名排序中,通常先按照姓氏的笔画数排序,如果姓氏相同,则按照名字的笔画数进行次级排序。 在计算机领域,实现这种排序需要对汉字编码有一定的了解。最常见的汉字编码标准有GB2312、GBK、Big5和Unicode...

    Java编程实现汉字按字母顺序排序的方法示例

    Java编程实现汉字按字母顺序排序的方法示例 本文主要介绍了Java编程实现汉字按字母顺序排序的方法,结合具体实例形式分析了Java编码转换及字母排序相关操作技巧。 一、Java编程实现汉字按字母顺序排序的方法 Java...

    java实现中文转拼音

    在Java编程语言中,将中文转换为拼音是一项常见的任务,特别是在处理中文文本的搜索、排序或者国际化需求时。本文将详细介绍如何使用Java实现中文转拼音的功能,并探讨相关的技术点。 首先,Java中实现中文转拼音...

    java综合面试题java综合面试题

    常见的排序算法包括冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序等。 9. **Overload 和 Override 的区别?Overloaded 的方法是否可以改变返回值的类型?** - Overload(重载)是方法名...

    Effective Java第三版1

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,它提供了许多最佳实践和设计原则,帮助开发者写出更高效、更可维护的代码。第三版延续了这一传统,对Java语言的新特性进行了更新,并给出了...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    Android实现列表数据按名称排序、中英文混合排序

    该比较器可以对 ResolveInfo 对象按照名称排序,其中使用了 Collator 对象对中文字符串进行比较。 结语 本文详细介绍了 Android 实现列表数据按名称排序和中英文混合排序的方法,包括使用 Collections.sort() 方法...

    Thinking in Java简体中文(全)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    按姓氏拼音排序.rar

    这一步通常需要用到中文转拼音库,如Python中的pypinyin库,它可以将中文汉字转化为对应的拼音。 在Python中,实现这一过程的代码可能如下: ```python from pypinyin import lazy_pinyin def sort_by_pinyin...

    Java Map 按Key排序实例代码

    总的来说,Java中对Map的Key进行排序通常有两种方式:一是使用支持排序的Map实现类如TreeMap,二是将HashMap的Key集合转换为List或TreeSet,然后进行排序。通过这种方式,我们可以灵活地根据需求调整Map中元素的顺序...

    java联想(中文)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Thinking in Java 中文第四版+习题答案

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的...

Global site tag (gtag.js) - Google Analytics