// Collator 類是用來執行區分語言環境的 String 比較的
Comparator cmp = Collator
TreeMap tree=new TreeMap(cmp);
String[] arr = {
// 使根據指定比較器產生的順序對指定對象數組進行排序
Arrays
for (int i =
System
<script>
names = [
names
alert(names);
</script>
另:
示例文本
String [] test = new String[] {
};
jdk 版本
開發平台
Eclipse
關鍵字
概述
我們在應用程序中可能會經常遇到對中文排序的問題
我們可能會經常使用
java
接口
java
等類或方法對含有中文字符的對象進行排序
String
方法
java
接口及其實現類
其實 java 中提供了和語言相關的類
java
是一個具體類
如果我們需要對一個有中文的數組進行排序
import java
import java
public class Test
{
String [] test = new String [] {
};
java
(RuleBasedCollator )Collator
System
for (String key : test)
System
}
以上代碼的輸出結果為
============
[
test
測試
我們
作業
浏
镂空
皙
大家可能會發現只有一部分漢字是按照漢語拼音排序了
問題分析
GB
在簡體中文中我們使用比較多的字符集是 GB
常用漢字
次常用漢字
常用漢字按照漢語拼音來排序
簡體漢字在 Unicode 中一般是按照 gb
解決方案
RuleBasedCollator 類 getRules() 方法可以返回對應語言的規則設置
我們可以把其中的全部漢字提取出來
對這些漢字重新排序
利用RuleBasedCollator(String rules) 構造器新建一個定制的 RuleBasedCollator
參考代碼
在以下的代碼中
package sorting;
import java
import java
/**
* @author GaoJianMin
*
*/
public class ChineseGB
{
/**
* @return a customized RuleBasedCollator with Chinese characters (GB
*
*/
public static final RuleBasedCollator getFixedGB
{
RuleBasedCollator fixedGB
try
{
fixedGB
ChineseGB
GB
);
}catch (ParseException e)
{
e
}
return fixedGB
}
/**
* @return the special characters in GB
*
*/
public static final String getGB
{
RuleBasedCollator zh_CNCollator = (RuleBasedCollator )Collator
//index
return zh_CNCollator
}
/**
*
*/
public static final String GB
}
package sorting;
import java
import java
/**
* @author GaoJianMin
*
*/
public class ChineseGB
private RuleBasedCollator GB
ChineseGB
private String str
/**
* @param str
*/
public ChineseGB
this
}
/**
*
*/
public ChineseGB
this
}
/**
* @param str
* @param str
* @return an integer indicatint the comparison result
* @see java
*/
public int compare(String str
return pare(str
}
/**
* @param str
* @return an integer indicatint the comparison result
* @see java
*/
public int compareTo(String str
return pare(str
}
}
測試代碼及結果
代碼
import java
import java
public class Test
{
String [] test = new String [] {
};
java
System
for (String key : test)
System
}
ChineseGB
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25680.html