`

汉字排序_java_转转

    博客分类:
  • java
阅读更多

java中漢字按拼音排序

文章分类:Java编程

 

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

 

Java代码
  1. public   static   void  main(String[] args) {   
  2.          
  3.   Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);       
  4.   
  5.   String[] arr = { "张三" "李四" "王五" "刘六"  , "周濤" , "戴笠" , "戴阿" };   
  6.   String[] arr1 = {"生活" , "文教" , "政治" , "自然" , "宗教" , "經貿" , "軍事" , "经贸" };   
  7.   
  8. //對簡體字有效,戴阿、戴笠在第一個字相同的情況下按拼音比較第二個字,很智能哦    
  9.   Arrays.sort(arr, cmp);   
  10.   for  ( int  i =  0 ; i < arr.length; i++)   
  11. //輸出:戴阿、戴笠、李四、刘六、王五、张三、周濤    
  12.       System.out.println(arr[i]);   
  13.   
  14. //對繁體字無效,繁體的“軍事”被拍到了最后    
  15.   Arrays.sort(arr1, cmp);   
  16.   for  ( int  i =  0 ; i < arr1.length; i++)   
  17.       //輸出:经贸、生活、文教、政治、自然、宗教、經貿、軍事    
  18.       System.out.println(arr1[i]);   
  19. }   
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方法即可。以下是個例子:

Java代码
  1. package  zhouyrt;   
  2. import  java.util.ArrayList;   
  3. import  java.util.Arrays;   
  4. import  java.util.Comparator;   
  5. import  java.util.List;   
  6. public   class  PinyinPaixu {   
  7.      static   class  Person {   
  8.      
  9.      private  String name;   
  10.      private  Integer salary; //薪水    
  11.      private  Integer age; //年齡    
  12.      
  13.     Person(String n, Integer s, Integer a) {   
  14.        this .name = n;   
  15.        this .salary = s;   
  16.        this .age = a;   
  17.     }   
  18.      
  19.     public  String getName() {   
  20.        return  name;   
  21.     }   
  22.     public   void  setName(String name) {   
  23.       this .name = name;   
  24.     }   
  25.     public  Integer getSalary() {   
  26.       return  salary;   
  27.     }   
  28.     public   void  setSalary(Integer salary) {   
  29.       this .salary = salary;   
  30.     }   
  31.     public  Integer getAge() {   
  32.       return  age;   
  33.     }   
  34.     public   void  setAge(Integer age) {   
  35.       this .age = age;   
  36.     }   
  37.      
  38.     public  String toString() {   
  39.       return   "姓名:"  +  this .name +  "\t薪水:"  +  this .salary +  "\t年齡:"  +  this .age;   
  40.     }   
  41. }   
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; 
    } 
} 
 

 

Java代码
  1. /*   
  2. * 按薪水排序,從低到高   
  3. */    
  4.    static   class  SalaryComparator  implements  Comparator {   
  5.       public   int  compare(Object o1, Object o2) {   
  6.      
  7.          Integer salary1 = ((Person)o1).salary;   
  8.          Integer salary2 = ((Person)o2).salary;   
  9.          if (salary1 - salary2 >  0 )   
  10.            return   1 ;   
  11.         if (salary1 - salary2 <  0 )   
  12.            return  - 1 ;   
  13.         else    
  14.            return   0 ;   
  15.       }     
  16.   }   
/* 
* 按薪水排序,從低到高 
*/ 
   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; 
      }   
  } 

 

 

Java代码
  1. /*   
  2. * 按年齡排序,從低到高   
  3. */    
  4.    static   class  AgeComparator  implements  Comparator {   
  5.        public   int  compare(Object o1, Object o2) {   
  6.      
  7.           Integer age1 = ((Person)o1).age;   
  8.           Integer age2 = ((Person)o2).age;   
  9.           if (age1 - age2 >  0 )   
  10.                return   1 ;   
  11.           if (age1 - age2 <  0 )   
  12.                return  - 1 ;   
  13.           else    
  14.                 return   0 ;   
  15.        }     
  16.    }   
/* 
* 按年齡排序,從低到高 
*/ 
   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方法測試:

Java代码
  1. public   static   void  main(String[] args) {   
  2.      
  3.        List<Person> list = new  ArrayList<Person>();   
  4.        list.add(new  Person( "張洋" , 3400 , 25 ));   
  5.        list.add(new  Person( "王肅" , 10000 , 27 ));   
  6.        list.add(new  Person( "李安" , 9000 , 30 ));   
  7.        list.add(new  Person( "劉虎" , 2500 , 22 ));   
  8.        list.add(new  Person( "安德剛" , 3500 , 21 ));   
  9.        Person[] personAry = new  Person[list.size()];     
  10.        personAry = list.toArray(new  Person[list.size()]);   
  11.   
  12.      
  13.       System.out.println("--- 排序前 ------------------------------------" );   
  14.       for (Person p : personAry) {   
  15.           System.out.println(p);   
  16.       }   
  17.       Arrays.sort(personAry,new  SalaryComparator());   
  18.       System.out.println("--- 按薪水排序后 ------------------------------------" );   
  19.       for (Person p : personAry) {   
  20.           System.out.println(p);   
  21.       }   
  22.      
  23.       Arrays.sort(personAry,new  AgeComparator());   
  24.       System.out.println("--- 按年齡排序后 ------------------------------------" );   
  25.       for (Person p : personAry) {   
  26.           System.out.println(p);   
  27.       }   
  28.      
  29.    }   
  30. }   
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

分享到:
评论

相关推荐

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

    在Java编程语言中,对包含中文、数字和字母的数据进行排序是一项常见的任务。这个场景下,我们关注的是如何实现一个自定义的排序规则,按照数字、字母和汉字的顺序进行排列。以下是对这一主题的详细解释。 首先,...

    java汉字笔画排序2例子及jar包

    标签进一步明确了关键概念,包括"汉字笔画排序"、"java汉字笔画排序"、"java汉字按照笔画排序"、"汉字按照笔画排序"和"中文笔画排序"。这些标签强调了该话题的特定技术点,即使用Java语言对中文字符进行笔画计数并...

    JAVA API1.6中文文档.zip_java api中文_java 文档

    Java API 1.6中文文档是对Java 2 Platform Standard Edition 6.0(J2SE 6.0)的API规范的重要参考资料,它为开发者提供了详细的API接口、类和方法的说明,帮助开发者理解并有效地使用Java编程语言。这篇文档包含了...

    Java 中文排序 使用pinyin4j组件

    以下是如何使用`pinyin4j`进行中文排序的详细步骤: 1. **添加依赖**:首先,你需要在项目中引入`pinyin4j`库。如果你的项目是Maven项目,可以在`pom.xml`文件中添加如下依赖: ```xml &lt;groupId&gt;...

    汉字和数字混合排序

    在计算机科学领域,汉字和数字混合排序是一项挑战性任务,特别是在处理中文文本数据时。由于汉字与数字在数据结构和编码上的本质差异,混合排序需要特定的算法和技术来实现。以下将详细介绍汉字和数字混合排序的相关...

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

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

    汉字转拼音jar包_pinyin4j(java)

    `pinyin4j`是由Barry Zhang开发的一个开源项目,它提供了一套简洁的API,使得在Java或Android项目中集成汉字转拼音功能变得简单。该库不仅适用于标准Java环境,还兼容Android平台,因此在移动开发中也十分适用。 要...

    JAVA 汉字转换拼音

    总的来说,Java中的汉字转拼音通过pinyin4j库变得非常简单,只需要正确引入库并编写一些辅助方法,就可以轻松地在程序中实现汉字与拼音之间的转换。这在处理中文数据时非常有用,能够帮助开发出更加适应中国用户的...

    中文拼音排序

    在IT行业中,中文字符排序是一个常见的需求,尤其是在处理汉字数据时。中文拼音排序是一种解决方案,它将汉字转换为对应的拼音,然后按照拼音的顺序进行排序。这个“中文拼音排序”项目利用了`pinyin4j`库来实现这一...

    数据结构与算法分析_Java语言描述(第2版)]

    中文名: 数据结构与算法分析_Java语言描述(第2版)作者: 韦斯译者: 冯舜玺资源格式: PDF版本: 扫描版出版社: 机械工业出版社书号: ISBN:9787111231837发行时间: 2009年01月01日地区: 大陆语言: 简体中文简介: 内容...

    中文首字母排序java代码

    1. **中文排序**:在处理中文数据时,直接按照字节顺序排序可能导致错误的结果,因为汉字编码的字节顺序并不等同于它们在汉语中的自然排序。通过将每个汉字转换为其拼音首字母,可以实现更合理的排序。 2. **检索...

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

    本主题将深入探讨如何使用SortedSet接口来实现Java对象的中文排序,并通过源码分析理解其工作原理。 首先,SortedSet是Java集合框架中的一个接口,它继承自Set接口并添加了排序的特性。SortedSet的主要实现类有...

    java中文简体转繁体ZHConverter

    Java通过`java.text.BreakIterator`、`java.text.CollationKey` 和 `java.text.RuleBasedCollator`等类来处理字符排序和比较,但这些类并不直接支持繁简转换。因此,`ZHConverter` 类很可能依赖于第三方库,如OpenCC...

    JDK_API_1_6_zh_CN java中文api

    在JDK_API_1_6_zh_CN中,我们找到了针对Java 1.6版本的中文API文档,这对于中国的Java开发者来说是一份极其宝贵的资源。 API(Application Programming Interface)文档是软件开发的重要参考资料,它详细列出了各种...

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

    这种汉字转英文字符的技术在实际应用中有多种用途: - **搜索引擎优化**:将汉字转化为英文首字母形式,有助于提高搜索结果的相关性和排序效率。 - **国际化**:在处理多语言环境时,这种转换可以帮助统一不同语言的...

    java实现中文转拼音

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

    Java 中文字符按Unicode排序的实现方法

    Java 中文字符按 Unicode 排序的实现方法 在 Java 中,实现中文字符按 Unicode 排序是一件非常重要的事情,特别是在处理中文字符串时。今天,我们将探讨如何使用 Java 语言来实现中文字符按 Unicode 排序。 在 ...

    java 中 TreeMap排序

    b) 对于包含中文字符的排序,情况变得复杂,因为中文的排序规则与英文不同。这时,我们需要利用`java.text.Collator`类。`Collator`提供了一种语言敏感的比较字符串的方法。首先,我们需要创建一个`Collator`实例,...

Global site tag (gtag.js) - Google Analytics