JavaTM 2 Platform
Standard Ed. 6

java.text
類別 Collator

java.lang.Object
  繼承者 java.text.Collator
所有已實作的介面:
Cloneable, Comparator<Object>
直接已知子類別:
RuleBasedCollator

public abstract class Collator
extends Object
implements Comparator<Object>, Cloneable

Collator 類別執行區分語言環境的 String 比較。使用此類別可為自然語言文本建構搜尋和排序例程。

Collator 是一個抽象基礎類別。其子類別實作具體的整理策略。Java 平臺目前提供了 RuleBasedCollator 子類別,它適用於很多種語言。還可以創建其他子類別,以處理更多的專門需要。

與其他區分語言環境的類別一樣,可以使用靜態處理器方法 getInstance 來為給定的語言環境獲得適當的 Collator 物件。如果需要理解特定整理策略的細節或者需要修改策略,只需查看 Collator 的子類別即可。

下面的範例顯示了如何使用針對預設語言環境的 Collator 比較兩個字元串。

 // Compare two strings in the default locale
 Collator myCollator = Collator.getInstance();
 if( myCollator.compare("abc", "ABC") < 0 )
     System.out.println("abc is less than ABC");
 else
     System.out.println("abc is greater than or equal to ABC");
 

可以設置 Collatorstrength 屬性來確定比較中認為顯著的差異級別。提供了四種 strength:PRIMARYSECONDARYTERTIARYIDENTICAL。對語言特徵的確切 strength 賦值和語言環境相關。例如在捷克語中,"e" 和 "f" 被認為是 PRIMARY 差異,而 "e" 和 "ě" 則是 SECONDARY 差異,"e" 和 "E" 是 TERTIARY 差異,"e" 和 "e" 是 IDENTICAL。下面的範例顯示了如何針對美國英語忽略大小寫和重音。

 //Get the Collator for US English and set its strength to PRIMARY
 Collator usCollator = Collator.getInstance(Locale.US);
 usCollator.setStrength(Collator.PRIMARY);
 if( usCollator.compare("abc", "ABC") == 0 ) {
     System.out.println("Strings are equivalent");
 }
 

如果正好比較 String 一次,則 compare 方法可提供最佳性能。但在對 String 列表排序時,通常需要對每個 String 進行多次比較。在這種情況下,CollationKey 可提供更好的性能。CollationKey 類別將一個 String 轉換成一系列可與其他 CollationKey 進行按位比較的位。CollationKey 是由 Collator 物件為給定的 String 所創建的。
註:不能比較由不同 Collator 創建的 CollationKey。有關使用 CollationKey 的範例,請參閱 CollationKey 的類別描述。

另請參見:
RuleBasedCollator, CollationKey, CollationElementIterator, Locale

欄位摘要
static int CANONICAL_DECOMPOSITION
          Decomposition 網要值。
static int FULL_DECOMPOSITION
          Decomposition 網要值。
static int IDENTICAL
          Collator 的 strength 值。
static int NO_DECOMPOSITION
          Decomposition 網要值。
static int PRIMARY
          Collator 的 strength 值。
static int SECONDARY
          Collator 的 strength 值。
static int TERTIARY
          Collator 的 strength 值。
 
建構子摘要
protected Collator()
          預設的建構子。
 
方法摘要
 Object clone()
          覆寫 Cloneable
 int compare(Object o1, Object o2)
          比較此方法兩個參數的順序。
abstract  int compare(String source, String target)
          根據此 Collator 的整理規則來比較源字元串和目標字元串。
 boolean equals(Object that)
          比較兩個 Collator 的相等性。
 boolean equals(String source, String target)
          根據此 Collator 的整理規則比較兩個字元串是否相等的便捷方法。
static Locale[] getAvailableLocales()
          返回一個所有受支持語言環境的陣列,此類別的 getInstance 方法可為這些語言環境返回已本地化的實例。
abstract  CollationKey getCollationKey(String source)
          將該 String 轉換為一系列可以和其他 CollationKey 按位進行比較的位。
 int getDecomposition()
          獲取此 Collator 的 decomposition 網要。
static Collator getInstance()
          獲取當前預設語言環境的 Collator。
static Collator getInstance(Locale desiredLocale)
          獲取所需語言環境的 Collator。
 int getStrength()
          返回此 Collator 的 strength 屬性。
abstract  int hashCode()
          產生此 Collator 的雜湊碼。
 void setDecomposition(int decompositionMode)
          設置此 Collator 的 decomposition 網要。
 void setStrength(int newStrength)
          設置此 Collator 的 strength 屬性。
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

PRIMARY

public static final int PRIMARY
Collator 的 strength 值。設置該值後,比較期間僅將 PRIMARY 及以上的差異視為顯著的。對語言特徵的 strength 賦值和語言環境相關。常見的例子是將不同的基本字母("a" 和 "b")視為 PRIMARY 差異。

另請參見:
setStrength(int), getStrength(), 常數欄位值

SECONDARY

public static final int SECONDARY
Collator 的 strength 值。設置該值後,比較期間僅將 SECONDARY 的差異視為顯著的。對語言特徵的 strength 賦值和語言環境相關。常見的例子是將相同基本字母的不同重音形式("a" 和 "?")視為 SECONDARY 差異。

另請參見:
setStrength(int), getStrength(), 常數欄位值

TERTIARY

public static final int TERTIARY
Collator 的 strength 值。設置該值後,比較期間僅將 TERTIARY 及以上的差異視為顯著的。對語言特徵的 strength 賦值和語言環境相關。常見的例子是將大小寫差異(如 "a" 和 "A")視為 TERTIARY 差異。

另請參見:
setStrength(int), getStrength(), 常數欄位值

IDENTICAL

public static final int IDENTICAL
Collator 的 strength 值。設置該值後,比較期間將所有的差異都視為顯著的。對語言特徵的 strength 賦值和語言環境相關。常見的例子是控制字元("\u0001" 和 "\u0002")在 PRIMARY、SECONDARY 和 TERTIARY 級別視為相等的,但在 IDENTICAL 級別則是不同的。另外,如果將 decomposition 設置為 NO_DECOMPOSITION,則像 "\u00C0"(A-重音)的前構重音和像 "A\u0300"(A,組合重音)的組合重音將在 IDENTICAL 級別被視為是顯著差異。

另請參見:
常數欄位值

NO_DECOMPOSITION

public static final int NO_DECOMPOSITION
Decomposition 網要值。設置為 NO_DECOMPOSITION 時,不會為了整理而分解重音字元。這是預設的設置並可提供最快的整理,但是僅對那些不使用重音的語言才能得出正確的結果。

另請參見:
getDecomposition(), setDecomposition(int), 常數欄位值

CANONICAL_DECOMPOSITION

public static final int CANONICAL_DECOMPOSITION
Decomposition 網要值。設置為 CANONICAL_DECOMPOSITION 時,將為整理而分解那些根據 Unicode 標準為規範變體的字元。要獲取重音字元的正確整理,應該使用該值。

CANONICAL_DECOMPOSITION 對應於 Unicode Technical Report #15 中所描述的 Normalization Form D。

另請參見:
getDecomposition(), setDecomposition(int), 常數欄位值

FULL_DECOMPOSITION

public static final int FULL_DECOMPOSITION
Decomposition 網要值。設置為 FULL_DECOMPOSITION 時,將為整理而分解 Unicode 規範變體和 Unicode 相容變體。這樣就不僅能排序重音字元,而且對於具有特殊格式的字元,也能夠使用其標準化形式進行排序。例如,半角和全角的 ASCII 字元與片假名字元就能一同排序了。FULL_DECOMPOSITION 是最完整的,因此也是最慢的 decomposition 網要。

FULL_DECOMPOSITION 對應於 Unicode Technical Report #15 中所描述的 Normalization Form KD。

另請參見:
getDecomposition(), setDecomposition(int), 常數欄位值
建構子詳細資訊

Collator

protected Collator()
預設的建構子。此建構子是受保護的,所以子類別可以存取它。使用者通常調用 getInstance 處理器方法來創建一個 Collator 子類別。

另請參見:
getInstance()
方法詳細資訊

getInstance

public static Collator getInstance()
獲取當前預設語言環境的 Collator。通過 java.util.Locale.getDefault 來確定預設的語言環境。

返回:
預設語言環境(例如 en_US)的 Collator。
另請參見:
Locale.getDefault()

getInstance

public static Collator getInstance(Locale desiredLocale)
獲取所需語言環境的 Collator。

參數:
desiredLocale - 所需的語言環境。
返回:
所需語言環境的 Collator。
另請參見:
Locale, ResourceBundle

compare

public abstract int compare(String source,
                            String target)
根據此 Collator 的整理規則來比較源字元串和目標字元串。根據源字元串是小於、等於或大於目標字元串來返回負整數、零或正整數。有關此方法的使用範例,請參閱 Collator 的類別描述。

對於一次比較,此方法具有最佳性能。如果在多次比較中涉及給定的 String,則 CollationKey.compareTo 具有最佳性能。有關使用 CollationKeys 的範例,請參閱 Collator 的類別描述。

參數:
source - 源字元串。
target - 目標字元串。
返回:
返回一個整數值。如果源小於目標,則該值小於零;如果源等於目標,則該值為零;如果源大於目標,則該值大於零。
另請參見:
CollationKey, getCollationKey(java.lang.String)

compare

public int compare(Object o1,
                   Object o2)
比較此方法兩個參數的順序。第一個參數小於、等於或大於第二個參數時分別返回負整數、零或正整數。

此實作僅返回 compare((String)o1, (String)o2)

指定者:
介面 Comparator<Object> 中的 compare
參數:
o1 - 要比較的第一個物件。
o2 - 要比較的第二個物件。
返回:
第一個參數小於、等於或大於第二個參數時分別返回負整數、零或正整數。
拋出:
ClassCastException - 無法將參數強制轉換為 String。
從以下版本開始:
1.2
另請參見:
Comparator

getCollationKey

public abstract CollationKey getCollationKey(String source)
將該 String 轉換為一系列可以和其他 CollationKey 按位進行比較的位。在多次比較中均涉及 String 時,CollationKey 的性能要優於 Collator.compare。有關使用 CollationKeys 的範例,請參閱 Collator 的類別描述。

參數:
source - 將要被轉換為整理鍵的字元串。
返回:
根據此 Collator 的整理規則為給定 String 創建的 CollationKey。如果源 String 為 null,則返回一個 null CollationKey。
另請參見:
CollationKey, compare(java.lang.String, java.lang.String)

equals

public boolean equals(String source,
                      String target)
根據此 Collator 的整理規則比較兩個字元串是否相等的便捷方法。

參數:
source - 要比較的源字元串。
target - 要比較的目標字元串。
返回:
如果根據整理規則,兩個字元串相等,則返回 true;否則返回 false。
另請參見:
compare(java.lang.String, java.lang.String)

getStrength

public int getStrength()
返回此 Collator 的 strength 屬性。strength 屬性確定了在比較期間被視為顯著的最低差異級別。有關此方法的使用範例,請參閱 Collator 的類別描述。

返回:
此 Collator 的當前 strength 屬性。
另請參見:
setStrength(int), PRIMARY, SECONDARY, TERTIARY, IDENTICAL

setStrength

public void setStrength(int newStrength)
設置此 Collator 的 strength 屬性。strength 屬性確定了在比較期間被視為顯著的最低差異級別。有關此方法的使用範例,請參閱 Collator 的類別描述。

參數:
newStrength - 新的 strength 值。
拋出:
IllegalArgumentException - 如果新的 strength 值不是 PRIMARY、SECONDARY、TERTIARY 或 IDENTICAL 之一。
另請參見:
getStrength(), PRIMARY, SECONDARY, TERTIARY, IDENTICAL

getDecomposition

public int getDecomposition()
獲取此 Collator 的 decomposition 網要。Decomposition 網要確定如何處理 Unicode 組合字元。調整 decomposition 網要允許使用者在更快和更完整的整理行為之間進行選擇。

用於 decomposition 網要的三個值是:

有關這三個常數含義的描述,請參閱這些常數的文檔。

返回:
decomposition 網要
另請參見:
setDecomposition(int), NO_DECOMPOSITION, CANONICAL_DECOMPOSITION, FULL_DECOMPOSITION

setDecomposition

public void setDecomposition(int decompositionMode)
設置此 Collator 的 decomposition 網要。有關 decomposition 網要的描述,請參閱 getDecomposition。

參數:
decompositionMode - 新的 decomposition 網要。
拋出:
IllegalArgumentException - 如果給定值不是有效的 decomposition 網要。
另請參見:
getDecomposition(), NO_DECOMPOSITION, CANONICAL_DECOMPOSITION, FULL_DECOMPOSITION

getAvailableLocales

public static Locale[] getAvailableLocales()
返回一個所有受支持語言環境的陣列,此類別的 getInstance 方法可為這些語言環境返回已本地化的實例。 返回的陣列代表 Java 運行時和已安裝的 CollatorProvider 實作所支持的語言環境的聯合。它至少包含一個等同於 Locale.US 的 Locale 實例。

返回:
一個語言環境陣列,可以為這些語言環境提供已本地化的 Collator 實例。

clone

public Object clone()
覆寫 Cloneable

覆寫:
類別 Object 中的 clone
返回:
此實例的一個副本。
另請參見:
Cloneable

equals

public boolean equals(Object that)
比較兩個 Collator 的相等性。

指定者:
介面 Comparator<Object> 中的 equals
覆寫:
類別 Object 中的 equals
參數:
that - 要與此 Collator 進行比較的 Collator。
返回:
如果此 Collator 與該 Collator 相同,則返回 true;否則返回 false.
另請參見:
Object.hashCode(), Hashtable

hashCode

public abstract int hashCode()
產生此 Collator 的雜湊碼。

覆寫:
類別 Object 中的 hashCode
返回:
此物件的一個雜湊碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only