`
liukemin
  • 浏览: 8338 次
  • 性别: 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 中文姓氏 排序

    假设我们有一个 `SysTeacherInfo` 类,其中包含教师的名字 `teachername`,我们需要按照教师的中文姓氏进行排序。 ```java import java.util.*; import java.text.*; public class TeacherSortExample { public ...

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

    在Windows操作系统中,文件排序规则通常依据文件的名称、扩展名以及创建或修改日期等因素进行。在Java编程环境中,我们也可以模拟实现这种排序规则。Java提供了丰富的类库和方法来处理文件操作,包括对文件的排序。...

    Java 中文排序 使用pinyin4j组件

    在Java编程语言中,对中文字符串进行排序是一个相对复杂的问题,因为中文字符的排序不能简单地按照Unicode编码顺序来处理。通常,我们需要考虑汉字的拼音或者笔画等属性来进行排序。这里我们将详细介绍如何使用`...

    JAVA sql 汉字排序

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

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

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

    Java名字获取拼音

    在Java编程中,有时我们需要将汉字转换为对应的拼音,以便进行特定的处理,如关键词搜索、数据排序等。"Java名字获取拼音"这个主题就是关于如何在Java中实现这一功能。这里我们将深入探讨如何利用开源库pinyin4j来...

    JAVA中汉字字符转化为英文字符

    - **搜索引擎优化**:将汉字转化为英文首字母形式,有助于提高搜索结果的相关性和排序效率。 - **国际化**:在处理多语言环境时,这种转换可以帮助统一不同语言的处理流程。 - **数据分析**:对于大量包含中文字符的...

    displaytag中文排序问题解决办法

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

    Java自定义比较器实现中文排序

    按照默认的比较器排序,结果可能不符合我们通常的中文名称排序。为了解决这个问题,我们需要使用`java.text.Collator`类,它可以处理不同语言的排序规则,包括中文。我们需要创建一个`Collator`实例,并指定`Locale....

    Java对象排序、中文排序、SortedSet排序使用和源码讲解

    // 假设根据名字排序 } } ``` 实现了`Comparable`接口后,你可以直接使用`Collections.sort()`或`Arrays.sort()`对`UserDO`对象列表或数组进行排序。 2. **中文排序**: 在处理中文字符时,Java使用`...

    按拼音排序分组LIST

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

    地区码与地区名称相互转换java代码11.zip

    这个“地区码与地区名称相互转换java代码11.zip”文件很可能是提供了一个Java实现,用于解决此类问题。下面将详细讨论相关知识点。 1. 地区码(Area Code): 地区码通常指的是国家、省份、城市等地理区域的编码,...

    按姓氏笔画排序.rar

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

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

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

    Java TCP IP Socket编程(中文版)

    也提到了地址和名字在网络中的作用,以及客户端和服务器的概念。本章结尾提到了什么是套接字,它是网络通信的基础。 第2章深入讲解了基本套接字的使用。首先介绍了套接字地址,然后分别介绍了TCP客户端和服务器端的...

    Java中的输入汉字拼音首字母即自动显示数据库中相应内容

    Java提供了JDK内置的`java.text`包中的`Collator`类,可以实现对字符串的排序和比较,但并不直接支持汉字转拼音。因此,我们通常需要借助第三方库,如`Pinyin4j`,这是一个专门处理汉字与拼音转换的Java库。 1. **...

    java汉字转拼音配置文件及jar.zip

    2. **文本排序**:对于中文名字或地名,可以通过首字母进行排序,如同英文名字的首字母排序。 3. **语音识别**:在语音输入场景下,将语音转化为文字时,汉字转拼音是中间步骤之一。 4. **数据分析**:在大数据分析...

    android 联系人排序,支持中文 demo

    在Android项目中,可以引入该库,对中文姓名进行预处理,将每个汉字转换成拼音,然后根据拼音进行排序。 5. **自定义比较器(Comparator)**: 在Android中,我们可以创建一个自定义的Comparator类,重写compare()...

Global site tag (gtag.js) - Google Analytics