`
zhouyrt
  • 浏览: 1172545 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中漢字按拼音排序

阅读更多

 

最近項目中需要對繁體字按拼音進行排序

 

public static void main(String[] args) { 
       
  Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);     

  String[] arr = { "张三", "李四", "王五", "刘六" ,"周濤","戴笠","戴阿"}; 
  String[] arr1 = {"生活","文教","政治","自然","宗教","經貿","軍事","经贸"}; 

//對簡體字有效,戴阿、戴笠在第一個字相同的情況下按拼音比較第二個字,很智能哦 
  Arrays.sort(arr, cmp); 
  for (int i = 0; i < arr.length; i++) 
//輸出:戴阿、戴笠、李四、刘六、王五、张三、周濤 
      System.out.println(arr[i]); 

//對繁體字無效,繁體的“軍事”被拍到了最后 
  Arrays.sort(arr1, cmp); 
  for (int i = 0; i < arr1.length; i++) 
      //輸出:经贸、生活、文教、政治、自然、宗教、經貿、軍事 
      System.out.println(arr1[i]); 
} 

 關于繁體字按拼音排序,可以利用util包下的Comparator接口,按自定義的規則實現compare方法即可。以下是個例子:

package zhouyrt; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Comparator; 
import java.util.List; 
public class PinyinPaixu { 
     static class Person { 
   
     private String name; 
     private Integer salary;//薪水 
     private Integer age;//年齡 
   
    Person(String n, Integer s, Integer a) { 
       this.name = n; 
       this.salary = s; 
       this.age = a; 
    } 
   
    public String getName() { 
       return name; 
    } 
    public void setName(String name) { 
      this.name = name; 
    } 
    public Integer getSalary() { 
      return salary; 
    } 
    public void setSalary(Integer salary) { 
      this.salary = salary; 
    } 
    public Integer getAge() { 
      return age; 
    } 
    public void setAge(Integer age) { 
      this.age = age; 
    } 
   
    public String toString() { 
      return "姓名:" + this.name + "\t薪水:" + this.salary + "\t年齡:" + this.age; 
    } 
} 
 

 

/* 
* 按薪水排序,從低到高 
*/ 
   static class SalaryComparator implements Comparator { 
      public int compare(Object o1, Object o2) { 
   
         Integer salary1 = ((Person)o1).salary; 
         Integer salary2 = ((Person)o2).salary; 
         if(salary1 - salary2 > 0) 
           return 1; 
        if(salary1 - salary2 < 0) 
           return -1; 
        else 
           return 0; 
      }   
  } 

 

 

/* 
* 按年齡排序,從低到高 
*/ 
   static class AgeComparator implements Comparator { 
       public int compare(Object o1, Object o2) { 
   
          Integer age1 = ((Person)o1).age; 
          Integer age2 = ((Person)o2).age; 
          if(age1 - age2 > 0) 
               return 1; 
          if(age1 - age2 < 0) 
               return -1; 
          else 
                return 0; 
       }   
   } 
 
main方法測試:

public static void main(String[] args) { 
   
       List<Person> list = new ArrayList<Person>(); 
       list.add(new Person("張洋",3400,25)); 
       list.add(new Person("王肅",10000,27)); 
       list.add(new Person("李安",9000,30)); 
       list.add(new Person("劉虎",2500,22)); 
       list.add(new Person("安德剛",3500,21)); 
       Person[] personAry = new Person[list.size()];   
       personAry = list.toArray(new Person[list.size()]); 

   
      System.out.println("--- 排序前 ------------------------------------"); 
      for(Person p : personAry) { 
          System.out.println(p); 
      } 
      Arrays.sort(personAry,new SalaryComparator()); 
      System.out.println("--- 按薪水排序后 ------------------------------------"); 
      for(Person p : personAry) { 
          System.out.println(p); 
      } 
   
      Arrays.sort(personAry,new AgeComparator()); 
      System.out.println("--- 按年齡排序后 ------------------------------------"); 
      for(Person p : personAry) { 
          System.out.println(p); 
      } 
   
   } 
} 
 
以下是輸出結果:

--- 排序前 ------------------------------------
姓名:張洋 薪水:3400 年齡:25
姓名:王肅 薪水:10000 年齡:27
姓名:李安 薪水:9000 年齡:30
姓名:劉虎 薪水:2500 年齡:22
姓名:安德剛 薪水:3500 年齡:21

--- 按薪水排序后 ------------------------------------
姓名:劉虎 薪水:2500 年齡:22
姓名:張洋 薪水:3400 年齡:25
姓名:安德剛 薪水:3500 年齡:21
姓名:李安 薪水:9000 年齡:30
姓名:王肅 薪水:10000 年齡:27

--- 按年齡排序后 ------------------------------------
姓名:安德剛 薪水:3500 年齡:21
姓名:劉虎 薪水:2500 年齡:22
姓名:張洋 薪水:3400 年齡:25
姓名:王肅 薪水:10000 年齡:27
姓名:李安 薪水:9000 年齡:30

4
2
分享到:
评论
1 楼 fins 2008-10-09  
有个开源组件 似乎可以做这事

另外 多音字怎么处理???

相关推荐

    java集合某个字段按照中文拼音排序.docx

    Java集合某个字段按照中文拼音排序是Java开发中经常遇到的问题。对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用...

    Android中文按拼音排序

    "Android中文按拼音排序"这个话题就是关于如何实现这样的功能。这篇博客(博文链接:https://gqdy365.iteye.com/blog/2002488)可能提供了详细的实现方法。 首先,我们要理解的是,中文字符本身并不直接携带拼音...

    java中文排序,数字字母汉字排序

    总结起来,实现Java中按数字、字母和汉字顺序的排序,主要步骤包括: 1. 创建自定义的`Comparator`类。 2. 使用`PinyinHelper`将中文字符转换为拼音。 3. 分类处理数字、字母和汉字,根据它们的特性进行比较。 4. ...

    软件实现汉字按拼音排序

    在IT领域,尤其是在编程和数据处理中,对汉字进行按拼音排序是一项常见的需求。这个任务主要涉及汉字与拼音之间的转换以及排序算法的应用。标题“软件实现汉字按拼音排序”所指的知识点主要包括以下几部分: 1. **...

    按拼音排序分组LIST

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

    java汉字排序

    4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class PinyinComparator implements Comparator&lt;Object&gt; { 9. public int compare(Object o1, Object o2) { 10...

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

    在中文环境中,`Collator`会根据中文拼音进行比较。以下是一个简单的示例,演示如何使用`Collator`对汉字字符串数组进行排序: ```java import java.text.Collator; import java.util.Arrays; public class ...

    中文拼音排序

    中文拼音排序是一种解决方案,它将汉字转换为对应的拼音,然后按照拼音的顺序进行排序。这个“中文拼音排序”项目利用了`pinyin4j`库来实现这一功能。 `pinyin4j`是一个强大的Java库,专门用于处理中文字符的拼音...

    Java 中文排序 使用pinyin4j组件

    通过以上步骤,我们就可以利用`pinyin4j`库实现Java中对中文字符串的拼音排序了。这个方法在处理大量中文数据时尤其有用,比如构建中文搜索引擎、整理中文数据库等场景。不过,需要注意的是,这种方法并不完全符合...

    sql 按拼音首字母排序

    标题“SQL按拼音首字母排序”以及描述中的关键词“SQL按拼音排序”,指向了一种特殊的数据排序需求:在数据库中,针对包含中文字符的字段,按照中文拼音的首字母进行排序。这在处理大量含有中文名称、地点等信息的...

    关于中文英文混合排序javaDemo

    例如,你可能需要在保持英文字符顺序的同时,让中文字符按照中文拼音的顺序排列。 总结一下,处理中文英文混合排序的关键在于理解Java的`Collator`类和`Locale`,并根据具体需求调整排序规则。这个"关于中文英文...

    java 取汉字拼音工具包

    Java中的汉字拼音工具包主要服务于程序开发,尤其是前端开发,用于处理汉字与拼音之间的转换,这对于构建具有中文支持的应用或网站至关重要。这类工具包能够帮助开发者轻松地将汉字转换为对应的拼音,便于进行搜索、...

    java实现中文转拼音

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

    Android-Android中文拼音排序以及中文笔划排序和英文排序

    中文拼音排序是基于汉字的拼音首字母进行排序,适用于大部分中文字符串的排序需求。在Android中,我们可以使用Java或Kotlin的内置函数配合第三方库如`PinYin4j`或`hanzi-tools`来实现。 1. **PinYin4j**:这是一个...

    Java编程实现中英混合字符串数组按首字母排序的方法

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...

    解决Sqlite中文排序问题(网页)

    在SQLiteDatabase,特别是SQLite3中,处理中文排序问题是一个常见的挑战。SQLite3是一个轻量级、自包含的数据库引擎,广泛应用于嵌入式系统和移动应用。然而,它默认的排序规则可能不适用于中文字符,因为中文字符的...

    Java 获取汉字的拼音或汉字首字母

    Java 获取汉字的拼音或汉字首字母在Java中获取汉字的拼音或汉字首字母是一个有挑战性的任务,因为汉字没有像拉丁字母那样的标准编码方案。不过,有一些第三方库可以简化这个过程。汉字拼音库是一个常用的库,它可以...

    java拼音搜索pinyin4j

    Java拼音搜索是一个在Java开发中常见的功能,尤其在构建搜索引擎或者中文输入法时,将汉字转化为拼音以便于处理和检索。Pinyin4j是一个流行的Java库,专门用于处理汉字到拼音的转换。在这个项目中,采用了Servlet三...

    一个获得汉字拼音首字母的java程序

    该Java程序的实用价值在于,它提供了一种简便的方式,将复杂的汉字数据转换为易于处理的拼音首字母形式,这对于构建中文信息检索系统、中文姓名数据库管理、以及任何需要快速识别和排序中文文本的应用场景都极其有用...

Global site tag (gtag.js) - Google Analytics