JavaTM 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 Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策