所有类


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 2 平台目前提供了 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 intCANONICAL_DECOMPOSITION
          Decomposition 模式值。
static intFULL_DECOMPOSITION
          Decomposition 模式值。
static intIDENTICAL
          Collator 的 strength 值。
static intNO_DECOMPOSITION
          Decomposition 模式值。
static intPRIMARY
          Collator 的 strength 值。
static intSECONDARY
          Collator 的 strength 值。
static intTERTIARY
          Collator 的 strength 值。
 
构造方法摘要
protected Collator()
          默认的构造方法。
 
方法摘要
 Objectclone()
          重写 Cloneable
 intcompare(Object o1, Object o2)
          比较此方法两个参数的顺序。
abstract  intcompare(String source, String target)
          根据此 Collator 的整理规则来比较源字符串和目标字符串。
 booleanequals(Object that)
          比较两个 Collator 的相等性。
 booleanequals(String source, String target)
          根据此 Collator 的整理规则比较两个字符串是否相等的便捷方法。
static Locale[]getAvailableLocales()
          返回一个所有语言环境的数组,此类的 getInstance 方法可为这些语言环境返回已本地化的实例。
abstract  CollationKeygetCollationKey(String source)
          将该 String 转换为一系列可以和其他 CollationKeys 按位进行比较的位。
 intgetDecomposition()
          获得此 Collator 的 decomposition 模式。
static CollatorgetInstance()
          获得当前默认语言环境的 Collator。
static CollatorgetInstance(Locale desiredLocale)
          获得所需语言环境的 Collator。
 intgetStrength()
          返回此 Collator 的 strength 属性。
abstract  inthashCode()
          生成此 Collator 的哈希码。
 voidsetDecomposition(int decompositionMode)
          设置此 Collator 的 decomposition 模式。
 voidsetStrength(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()