欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Jjava中文漢字排序
// Collator 類(lèi)是用來(lái)執行區分語(yǔ)言環(huán)境的 String 比較的,這里選擇使用CHINA

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

  TreeMap tree=new TreeMap(cmp);

  String[] arr = {"張三", "李四", "王五"};

  // 使根據指定比較器產(chǎn)生的順序對指定對象數組進(jìn)行排序。

  Arrays.sort(arr, cmp);

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

  System.out.println(arr[i]);

  <script>

  names = ["張三", "李四", "王五", "劉六"];

  names.sort(function(a,b){return a.localeCompare(b)});//a,b 為數組a的某兩個(gè)值,自動(dòng)傳入

  alert(names);

  </script>

  另:

  示例文本:

  String [] test = new String[] {

  "作業(yè)",

  "測試",

  "test",

  "我們",

  "???,

  "鏤空",

  "[",

  "瀏",

  "皙"

  };

  jdk 版本:

  1.5.6

  開(kāi)發(fā)平臺:

  Eclipse 3.1

  關(guān)鍵字: 中文排序

  概述

  我們在應用程序中可能會(huì )經(jīng)常遇到對中文排序的問(wèn)題,例如姓名列表,詞匯表等等。對中文排序,我們使用比較多的是根據漢語(yǔ)拼音發(fā)音來(lái)確定順序。

  我們可能會(huì )經(jīng)常使用

  java.util.Set

  接口,

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

  等類(lèi)或方法對含有中文字符的對象進(jìn)行排序,但是這些在默認情況下都是調用

  String .CompareTo(String )

  方法,這個(gè)方法是比較2個(gè)字符的 codepoint value,如果第一個(gè)字符的值小于第二個(gè),則在排序結果中第一個(gè)會(huì )在前面,反之亦然。

  java.text.Collator

  接口及其實(shí)現類(lèi)

  其實(shí) java 中提供了和語(yǔ)言相關(guān)的類(lèi),即 Collator 接口及其實(shí)現類(lèi)。

  java.text.RuleBasedCollator

  是一個(gè)具體類(lèi),它實(shí)現了 Comparator 接口中的 compare(Object, Object) 方法。RuleBasedCollator 根據根據特定語(yǔ)言的默認規則比較字符,也可以按照指定的規則來(lái)比較,請參閱 java API 獲取此類(lèi)的詳細信息。

  如果我們需要對一個(gè)有中文的數組進(jìn)行排序,則可以使用這個(gè)類(lèi)。請看如下示例代碼:

  import java.util.*;

  import java.text.*;

  public class Test

  {

  String [] test = new String [] {

  "作業(yè)" ,

  "測試" ,

  "test" ,

  "我們" ,

  "??? ,

  "鏤空" ,

  "[" ,

  "瀏" ,

  "皙"

  };
 
java.util.Arrays .sort(test,

  (RuleBasedCollator )Collator .getInstance(Locale .CHINA));

  System .out.println("============" );

  for (String key : test)

  System .out.println(key);

  }

  以上代碼的輸出結果為:

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

  [

  test

  ???/p>

  測試

  我們

  作業(yè)

  瀏

  鏤空

  皙

  大家可能會(huì )發(fā)現只有一部分漢字是按照漢語(yǔ)拼音排序了,還有幾個(gè)沒(méi)有。

  問(wèn)題分析:

  GB2312:

  在簡(jiǎn)體中文中我們使用比較多的字符集是 GB2312-80,簡(jiǎn)稱(chēng)為 GB2312,這個(gè)字符集包含了目前最常用的漢字共計 6736 個(gè)。其中的漢字分為兩大類(lèi):

  常用漢字

  次常用漢字

  常用漢字按照漢語(yǔ)拼音來(lái)排序,而次常用漢字按照筆畫(huà)部首進(jìn)行排序。

  簡(jiǎn)體漢字在 Unicode 中一般是按照 gb2312 的碼點(diǎn)值的順序來(lái)放置的,所以如果是常用漢字 java 就能夠很準確的進(jìn)行排序,但如果是次常用漢字,則就會(huì )出現問(wèn)題。在以上示例中,"鏤","皙" 屬于次常用字。來(lái)源:考試網(wǎng)IT學(xué)院

  解決方案:

  RuleBasedCollator 類(lèi) getRules() 方法可以返回對應語(yǔ)言的規則設置。簡(jiǎn)體中文對應的規則是 gb2312 所對應的字符。

  我們可以把其中的全部漢字提取出來(lái)

  對這些漢字重新排序

  利用RuleBasedCollator(String rules) 構造器新建一個(gè)定制的 RuleBasedCollator

  參考代碼

  在以下的代碼中,我把排過(guò)序的漢字直接作為 String 對象放在類(lèi)里面了,如果要讓代碼變得簡(jiǎn)潔一些,則可以把完整的規則(特殊字符+排序漢字)存為文件。

  package sorting;

  import java.util.*;

  import java.text.*;

  /**

  * @author GaoJianMin

  *

  */

  public class ChineseGB2312Collator

  {

  /**

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

  *

  */

  public static final RuleBasedCollator getFixedGB2312Collator()

  {

  RuleBasedCollator fixedGB2312Collator =null
 
try

  {

  fixedGB2312Collator = new java.text.RuleBasedCollator (

  ChineseGB2312Collator.getGB2312SpecialChars() +

  GB2312Chars

  );

  }catch (ParseException e)

  {

  e.printStackTrace();

  }

  return fixedGB2312Collator;

  }

  /**

  * @return the special characters in GB2312 charset.

  *

  */

  public static final String getGB2312SpecialChars()

  {

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

  //index 2125 is the last symbol "╋"

  return zh_CNCollator.getRules().substring(0,2125);

  }

  /**

  * 6763 Chinese characters in GB2312 charset

  */

  public static final String GB2312Chars =

  "<吖<阿<啊<錒<嗄<哎<哀<唉<埃<挨<锿<捱< 皚<癌<噯<矮<藹<靄<艾<愛(ài)<砹<隘<嗌<嬡<礙<曖< 璦<安<桉<氨<庵<諳<鵪<鞍<俺<埯<銨<揞<犴<岸< 按<案<胺<暗<黯<骯<昂<盎<凹<坳<敖<嗷<廒<獒< 遨<熬<翱<聱<螯<鰲<鏖<拗<襖<媼<岙<傲<奧<驁< 澳<懊<鏊" +

  "<八<巴<叭<扒<吧<岜<芭<疤<捌<笆<粑<拔< 茇<菝<跋<魃<把<鈀<靶<壩<爸<罷<鲅<霸<灞<掰< 白<百<佰<柏<捭<擺<唄<敗<拜<稗<扳<班<般<頒< 斑<搬<瘢<癍<阪<坂<板<版<鈑<舨<辦<半<伴<扮< 拌<絆<瓣<邦<幫<梆<浜<綁<榜<膀<蚌<傍<棒<謗< 蒡<磅<鎊<勹<包<孢<苞<胞<煲<齙<褒<雹<寶<飽< 保<鴇<堡<葆<褓<報<抱<豹<趵<鮑<暴<爆<陂<卑< 杯<悲<碑<鵯<北<貝<狽<邶<備<背<鋇<倍<悖<被< 憊<焙<輩<碚<蓓<褙<鞴<鐾<奔<賁<錛<本<苯<畚< 坌<笨<崩<繃<嘣<甭<泵<迸<甏<蹦<逼<荸<鼻<匕< 比<吡<妣<彼<秕<俾<筆<舭<鄙<幣<必<畢<閉<庇< 畀<嗶<毖<蓽<陛<斃<狴<鉍<婢<庳<敝<萆<弼<愎< 篳<潷<痹<蓖<裨<蹕<辟<弊<碧<箅<蔽<壁<嬖<篦< 薜<避<濞<臂<髀<璧<襞<邊<砭<籩<編<煸<蝙<鳊< 鞭<貶<扁<窆<匾<碥<褊<卞<弁<忭<汴<芐<拚<便< 變<緶<遍<辨<辯<辮<灬<杓<彪<標<颮<髟<驃<膘< 瘭<鏢<飆<飚<鑣<表<婊<裱<鰾<憋<鱉<別<蹩<癟< 賓<彬<儐<斌<濱<繽<檳<鑌<瀕<豳<擯<殯<臏<髕< 鬢<冫<冰<兵<丙<邴<秉<柄<炳<餅<稟<并<病<摒< 撥<波<玻<剝<缽<餑<啵<脖<菠<播<伯<孛<駁<帛< 泊<勃<亳<鈸<鉑<舶<博<渤<鵓<搏<箔<膊<踣<薄< 礴<跛<簸<擘<檗<逋<鈽<晡<醭<卜<卟<補<哺<捕< 不<布<步<怖<钚<部<埠<瓿<簿" ;

  }

  package sorting;

  import java.util.*;

  import java.text.*;

  /**

  * @author GaoJianMin

  *

  */

  public class ChineseGB2312Comparator implements Comparator <String >, Comparable <String > {

  private RuleBasedCollator GB2312Collator =

  ChineseGB2312Collator.getFixedGB2312Collator();

  private String str1;

  /**

  * @param str1

  */
 
public ChineseGB2312Comparator(String str1) {

  this .str1 = str1;

  }

  /**

  *

  */

  public ChineseGB2312Comparator() {

  this .str1="" ;

  }

  /**

  * @param str1

  * @param str2

  * @return an integer indicatint the comparison result

  * @see java.util.Comparator#compare(Object, Object)

  */

  public int compare(String str1, String str2) {

  return GB2312Collator.compare(str1, str2);

  }

  /**

  * @param str2

  * @return an integer indicatint the comparison result

  *   @see java.lang.Comparable#compareTo(Object)

  */

  public int compareTo(String str2) {

  return GB2312Collator.compare(str1, str2);

  }

  }

  測試代碼及結果

  代碼:

  import java.util.*;

  import java.text.*;

  public class Test

  {

  String [] test = new String [] {

  "作業(yè)" ,

  "測試" ,

  "test" ,

  "我們" ,

  "??? ,

  "鏤空" ,

  "[" ,

  "瀏" ,

  "皙"

  };

  java.util.Arrays .sort(test, new ChineseGB2312Comparator());

  System .out.println("============" );

  for (String key : test)

  System .out.println(key);

  }

  ChineseGB2312Comparator 類(lèi)同時(shí)實(shí)現了 Comparator, Comparable 接口,這樣以后能夠使用 compare, compareTo 方法的時(shí)候都可以使用這個(gè)類(lèi)。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JR 精品文章 - Java實(shí)現中文排序
java中文排序.
list與String的相互轉換(Java8)
java判斷string字符串中是否存在漢字
java byte 數據類(lèi)型
java中new String(str.getBytes(“gbk”),“gbk”)用法詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久