知识大全 Jjava中文汉字排序

Posted 中文

篇首语:犀渠玉剑良家子,白马金羁侠少年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Jjava中文汉字排序相关的知识,希望对你有一定的参考价值。

Jjava中文汉字排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  // Collator 类是用来执行区分语言环境的 String 比较的 这里选择使用CHINA

  Comparator cmp = Collator getInstance(java util Locale CHINA);

  TreeMap tree=new TreeMap(cmp);

  String[] arr = 张三 李四 王五 ;

  // 使根据指定比较器产生的顺序对指定对象数组进行排序

  Arrays sort(arr cmp);

  for (int i = ; i < arr length; i++)

  System out println(arr[i]);

  <script>

  names = [ 张三 李四 王五 刘六 ];

  names sort(function(a b)return a localeCompare(b));//a b 为数组a的某两个值 自动传入

  alert(names);

  </script>

  另:

  示例文本

  String [] test = new String[]

   作业

   测试

   test

   我们

   空

   镂空

   [

   浏

   皙

  ;

  jdk 版本

  

  开发平台

  Eclipse

  关键字 中文排序

  概述

  我们在应用程序中可能会经常遇到对中文排序的问题 例如姓名列表 词汇表等等 对中文排序 我们使用比较多的是根据汉语拼音发音来确定顺序

  我们可能会经常使用

  java util Set

  接口

  java util Arrays sort((T[] a Comparator <? super T> c))

  等类或方法对含有中文字符的对象进行排序 但是这些在默认情况下都是调用

  String CompareTo(String )

  方法 这个方法是比较 个字符的 codepoint value 如果第一个字符的值小于第二个 则在排序结果中第一个会在前面 反之亦然

  java text Collator

  接口及其实现类

  其实 java 中提供了和语言相关的类 即 Collator 接口及其实现类

  java text RuleBasedCollator

  是一个具体类 它实现了 Comparator 接口中的 pare(Object Object) 方法 RuleBasedCollator 根据根据特定语言的默认规则比较字符 也可以按照指定的规则来比较 请参阅 java API 获取此类的详细信息

  如果我们需要对一个有中文的数组进行排序 则可以使用这个类 请看如下示例代码

  import java util *;

  import java text *;

  public class Test

  

  String [] test = new String []

   作业

   测试

   test

   我们

   空

   镂空

   [

   浏

   皙

  ;

  java util Arrays sort(test

  (RuleBasedCollator )Collator getInstance(Locale CHINA));

  System out println( ============ );

  for (String key : test)

  System out println(key);

  

  以上代码的输出结果为

  ============

  [

  test

   空

  测试

  我们

  作业

  浏

  镂空

  皙

  大家可能会发现只有一部分汉字是按照汉语拼音排序了 还有几个没有

  问题分析

  GB :

  在简体中文中我们使用比较多的字符集是 GB 简称为 GB 这个字符集包含了目前最常用的汉字共计 个 其中的汉字分为两大类

  常用汉字

  次常用汉字

  常用汉字按照汉语拼音来排序 而次常用汉字按照笔画部首进行排序

  简体汉字在 Unicode 中一般是按照 gb 的码点值的顺序来放置的 所以如果是常用汉字 java 就能够很准确的进行排序 但如果是次常用汉字 则就会出现问题 在以上示例中 镂 皙 属于次常用字

  解决方案

  RuleBasedCollator 类 getRules() 方法可以返回对应语言的规则设置 简体中文对应的规则是 gb 所对应的字符

  我们可以把其中的全部汉字提取出来

  对这些汉字重新排序

  利用RuleBasedCollator(String rules) 构造器新建一个定制的 RuleBasedCollator

  参考代码

  在以下的代码中 我把排过序的汉字直接作为 String 对象放在类里面了 如果要让代码变得简洁一些 则可以把完整的规则(特殊字符+排序汉字)存为文件

  package sorting;

  import java util *;

  import java text *;

  /**

  * @author GaoJianMin

  *

  */

  public class ChineseGB Collator

  

  /**

  * @return a customized RuleBasedCollator with Chinese characters (GB ) sorted correctly

  *

  */

  public static final RuleBasedCollator getFixedGB Collator()

  

  RuleBasedCollator fixedGB Collator =null ;

  try

  

  fixedGB Collator = new java text RuleBasedCollator (

  ChineseGB Collator getGB SpecialChars() +

  GB Chars

  );

  catch (ParseException e)

  

  e printStackTrace();

  

  return fixedGB Collator;

  

  /**

  * @return the special characters in GB charset

  *

  */

  public static final String getGB SpecialChars()

  

  RuleBasedCollator zh_CNCollator = (RuleBasedCollator )Collator getInstance(Locale CHINA);

  //index is the last symbol ╋

  return zh_CNCollator getRules() substring( );

  

  /**

  * Chinese characters in GB charset

  */

  public static final String GB Chars =

   <吖<阿<啊<锕<嗄<哎<哀<唉<埃<挨<锿<挨<皑<癌<嗳<矮<蔼<霭<艾<爱<砹<隘<嗌<嫒<碍<暧<瑷<安<桉<氨<庵<谙<鹌<鞍<俺<埯<铵<揞<犴<岸<按<案<胺<暗<黯<肮<昂<盎<凹<坳<敖<嗷<廒<獒<遨<熬<翱<聱<螯<鳌<鏖<拗<袄<媪<岙<傲<奥<骜<澳<懊<鏊 +

   <八<巴<叭<扒<吧<岜<芭<疤<捌<笆<粑<拔<茇<菝<跋<魃<把<钯<靶<坝<爸<罢<鲅<霸<灞<掰<白<百<佰<柏<捭<摆<呗<败<拜<稗<扳<班<般<颁<斑<搬<瘢<癍<阪<坂<板<版<钣<舨<办<半<伴<扮<拌<绊<瓣<邦<帮<梆<浜<绑<榜<膀<蚌<傍<棒<谤<蒡<磅<镑<勹<包<孢<苞<胞<煲<龅<褒<雹<宝<饱<保<鸨<堡<葆<褓<报<抱<豹<趵<鲍<暴<爆<陂<卑<杯<悲<碑<鹎<北<贝<狈<邶<备<背<钡<倍<悖<被<惫<焙<辈<碚<蓓<褙<鞴<鐾<奔<贲<锛<本<苯<畚<坌<笨<崩<绷<嘣<甭<泵<迸<甏<蹦<逼<荸<鼻<匕<比<吡<妣<彼<秕<俾<笔<舭<鄙<币<必<毕<闭<庇<畀<哔<毖<荜<陛<毙<狴<铋<婢<庳<敝<萆<弼<愎<筚<滗<痺<蓖<裨<跸<辟<弊<碧<箅<蔽<壁<嬖<篦<薜<避<濞<臂<髀<璧<襞<边<砭<笾<编<煸<蝙<鳊<鞭<贬<扁<窆<匾<碥<褊<卞<弁<忭<汴<苄<拼<便<变<缏<遍<辨<辩<辫<灬<杓<彪<标<飑<髟<骠<膘<瘭<镖<飙<飚<镳<表<婊<裱<鳔<憋<鳖<别<蹩<瘪<宾<彬<傧<斌<滨<缤<槟<镔<濒<豳<摈<殡<膑<髌<鬓<冫<冰<兵<丙<邴<秉<柄<炳<饼<禀<并<病<摒<拨<波<玻<剥<钵<饽<啵<脖<菠<播<伯<孛<驳<帛<泊<勃<亳<钹<铂<舶<博<渤<鹁<搏<箔<膊<踣<薄<礴<跛<簸<擘<檗<逋<钸<晡<醭<卜<卟<补<哺<捕<不<布<步<怖<钚<部<埠<瓿<簿 ;

  

  package sorting;

  import java util *;

  import java text *;

  /**

  * @author GaoJianMin

  *

  */

  public class ChineseGB Comparator implements Comparator <String > Comparable <String >

  private RuleBasedCollator GB Collator =

  ChineseGB Collator getFixedGB Collator();

  private String str ;

  /**

  * @param str

  */

  public ChineseGB Comparator(String str )

  this str = str ;

  

  /**

  *

  */

  public ChineseGB Comparator()

  this str = ;

  

  /**

  * @param str

  * @param str

  * @return an integer indicatint the parison result

  * @see java util Comparator#pare(Object Object)

  */

  public int pare(String str String str )

  return pare(str str );

  

  /**

  * @param str

  * @return an integer indicatint the parison result

  *   @see java lang Comparable#pareTo(Object)

  */

  public int pareTo(String str )

  return pare(str str );

  

  

  测试代码及结果

  代码

  import java util *;

  import java text *;

  public class Test

  

  String [] test = new String []

   作业

   测试

   test

   我们

   空

   镂空

   [

   浏

   皙

  ;

  java util Arrays sort(test new ChineseGB Comparator());

  System out println( ============ );

  for (String key : test)

  System out println(key);

  

cha138/Article/program/Java/hx/201311/25680

相关参考

知识大全 能够在非中文平台上显示汉字吗

  能够在非中文平台上显示汉字吗?    Java程序能够使用操作系统所提供的字体因此只要你的操作系统上安装有一个支持  中文的字体你就可以在你的程序中显示汉字为了达到这个目的首先你必须创建一  个F

知识大全 小学四年级语文题 按一定的顺序排序

小学四年级语文题按一定的顺序排序1.汉字作文文学语言语言(由小到大)2.钢笔笔文具学习用品(由小到大)3.月球卫星月球地球太阳系(由小到大)4.帽子T恤裙子鞋(由上到下)5.劳动节建军节教师节国庆节(

知识大全 Oracle中的中文排序方式

Oracle中的中文排序方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  测试中文排序的数据库

知识大全 ~求一篇日语演讲稿,3~5行即可(120~200个假名),要有假名,日文汉字,中文,最好是说明道理的

急啊!~求一篇日语演讲稿,3~5行即可(120~200个假名),要有假名,日文汉字,中文,最好是说明道理的!一年【いちねん】の计【けい】は春【はる】にあります。春は花が咲く季节【きせつ】です、绿【みど

汉字是养生的艺术

美国的“中文热”已经涌动多年,然而,对于汉字汉语可以疗疾康复的发现,却是美国人的最新收获。美国费城的心理学家们公布了一例用汉字汉语治疗疾病的试验,引起医学界、心理学界、语言学界甚至信息科学界的极大关注

知识大全 打上许多拼音而汉字只有几个显示不全

为什么搜狗输入法这样啊!打上许多拼音而汉字只有几个显示不全?设定里面你看一下,要设全拼,中文,半形!为什么只有QQ拼音一种输入法,搜狗输入法下载却不显示?唉,回答好多类似的问题了。首先,你要确定你安装

知识大全 除了中国还有哪个国家讲中文的

除了中国还有哪个国家讲中文的?新加坡,印尼,马来西亚。中文(Chinese),狭义指汉语和汉字,即包括书写体系,也包括发音体系,广义包括少数民族语言文字。中文的使用人数在17亿以上,范围包括中国全境(

现代兵器知识 中文电传机

   直接拍发和接收中文电报,并具有存储、显示等功能的通信设备。通常由微处理器、存储器、键盘、显示器、打印机等组成。它可以直接输入、输出汉字,直观易读,效率高。主要用于中

知识大全 有人看得懂这几个日文字是什么意思吗

有人看得懂这几个日文字是什么意思吗这是一个人名姓:kinoshita(木下)名:azumi*另外在本人没有标汉字的情况下不建议自行填字,中文情况下也一样,同样读音可能会有多种汉字情况出现,甚至不是汉字

知识大全 中文域名这种东西有用吗?一个得多少钱?

中文域名这种东西有用吗?一个得多少钱?中文.和中文.最值得投资维持现有后缀不变这就立刻成功了一半其它的新汉字后缀都是外行玩比如什么.世界.手机.中国.网络等等千奇百怪数十种是给和抬轿子中文域名这种东西