模块 java.base
 java.text

类 Collator

java.lang.Object
java.text.Collator
所有已实现的接口:
Cloneable , Comparator<Object>
已知子类:
RuleBasedCollator

public abstract class Collator extends Object implements Comparator <Object >, Cloneable
Collator 类执行locale敏感的 String 比较。您可以使用此类为自然语言文本构建搜索和排序例程。

Collator 是一个抽象基类。子类实现特定的整理策略。一个子类 RuleBasedCollator 目前随 Java 平台一起提供,适用于多种语言。可以创建其他子类来处理更专业的需求。

与其他locale敏感的类一样,您可以使用静态工厂方法 getInstance 为给定的locale获取适当的 Collator 对象。如果您需要了解特定归类策略的详细信息或需要修改该策略,则只需查看 Collator 的子类。

以下示例显示如何使用默认locale的 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 属性以确定在比较中被认为具有显着性的差异水平。提供了四种强度:PRIMARYSECONDARYTERTIARYIDENTICAL。语言特征强度的确切分配取决于locale。例如,在捷克语中,“e”和“f”被认为是初级差异,而“e”和“ě”是次级差异,“e”和“E”是三级差异,“e”和“e”是相同的.下面显示了如何为美国英语忽略大小写和重音。

 //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 。在这种情况下,CollationKeys 提供更好的性能。 CollationKey 类将 String 转换为一系列可以与其他 CollationKey 进行按位比较的位。 CollationKeyCollator 对象为给定的 String 创建。
Note: CollationKey 来自不同的 Collator 无法进行比较。有关使用 CollationKey s 的示例,请参阅 CollationKey 的类描述。

自从:
1.1
参见:
  • 字段详细信息

    • PRIMARY

      public static final int PRIMARY
      收集器强度值。设置后,在比较过程中只有主要差异被认为是重要的。语言特征的强度分配取决于locale。一个常见的示例是将不同的基本字母(“a”与“b”)视为主要区别。
      参见:
    • SECONDARY

      public static final int SECONDARY
      收集器强度值。设置后,在比较过程中只有 SECONDARY 和以上差异被认为是显着的。语言特征的强度分配取决于locale。一个常见的示例是相同基本字母的不同重音形式(“a”与“ä”)被视为次要差异。
      参见:
    • TERTIARY

      public static final int TERTIARY
      收集器强度值。设置后,只有 TERTIARY 及以上差异在比较过程中被认为是重要的。语言特征的强度分配取决于locale。一个常见的示例是将大小写差异(“a”与“A”)视为第三差异。
      参见:
    • IDENTICAL

      public static final int IDENTICAL
      收集器强度值。设置后,所有差异在比较过程中都被认为是重要的。语言特征的强度分配取决于locale。一个常见示例是控制字符(“\u0001”与“\u0002”)在 PRIMARY、SECONDARY 和 TERTIARY 级别被视为相等,但在 IDENTICAL 级别不同。此外,如果分解设置为 NO_DECOMPOSITION,预组合重音(如“\u00C0”(A-grave))和组合重音(如“A\u0300”(A,combining-grave))之间的差异将在 IDENTICAL 级别被视为显着.
      参见:
    • NO_DECOMPOSITION

      public static final int NO_DECOMPOSITION
      分解模式值。设置 NO_DECOMPOSITION 后,重音字符将不会被分解以进行整理。这是默认设置并提供最快的归类,但只会为不使用重音符号的语言生成正确的结果。
      参见:
    • CANONICAL_DECOMPOSITION

      public static final int CANONICAL_DECOMPOSITION
      分解模式值。设置 CANONICAL_DECOMPOSITION 后,根据 Unicode 标准属于规范变体的字符将被分解以进行整理。这应该用于获得重音字符的正确排序。

      CANONICAL_DECOMPOSITION 对应于 Unicode 标准附件 #15:Unicode 规范化形式 中描述的规范化形式 D。

      参见:
    • FULL_DECOMPOSITION

      public static final int FULL_DECOMPOSITION
      分解模式值。使用 FULL_DECOMPOSITION 设置,Unicode 规范变体和 Unicode 兼容性变体都将被分解以进行整理。这不仅会导致对重音字符进行整理,还会将具有特殊格式的字符与其正常形式进行整理。例如,然后将半角和全角 ASCII 和片假名字符整理在一起。 FULL_DECOMPOSITION 是最完整的分解模式,因此也是最慢的分解模式。

      FULL_DECOMPOSITION 对应于 Normalization Form KD,如 Unicode 标准附件 #15:Unicode 规范化形式 中所述。

      参见:
  • 构造方法详细信息

    • Collator

      protected Collator()
      默认构造方法。此构造方法受到保护,因此子类可以访问它。用户通常通过调用工厂方法 getInstance 创建 Collator 子类。
      参见:
  • 方法详情

    • getInstance

      public static Collator  getInstance()
      获取当前默认locale的 Collator。默认locale由 java.util.Locale.getDefault 确定。
      返回:
      默认locale的 Collator。(例如,en_US)
      参见:
    • getInstance

      public static Collator  getInstance(Locale  desiredLocale)
      获取所需locale的 Collator。
      参数:
      desiredLocale - 所需的locale。
      返回:
      所需locale的 Collator。
      参见:
    • compare

      public abstract int compare(String  source, String  target)
      根据此整理器的整理规则将源字符串与目标字符串进行比较。根据源字符串是小于、等于还是大于目标字符串,返回小于、等于或大于零的整数。有关使用示例,请参阅 Collator 类描述。

      对于一次性比较,这种方法具有最好的性能。如果给定的 String 会涉及多次比较,CollationKey.compareTo 的性能最好。有关使用 CollationKeys 的示例,请参阅 Collator 类描述。

      参数:
      source - 源字符串。
      target - 目标字符串。
      返回:
      返回一个整数值。如果源小于目标,则值小于零;如果源和目标相等,则值为零;如果源大于目标,则值大于零。
      参见:
    • compare

      public int compare(Object  o1, Object  o2)
      比较其两个参数的顺序。当第一个参数小于、等于或大于第二个参数时,返回负整数、零或正整数。

      此实现仅返回 compare((String)o1, (String)o2)

      指定者:
      compare 在接口 Comparator<Object>
      参数:
      o1 - 要比较的第一个对象。
      o2 - 要比较的第二个对象。
      返回:
      作为第一个参数小于、等于或大于第二个参数的负整数、零或正整数。
      抛出:
      ClassCastException - 参数无法转换为字符串。
      自从:
      1.2
      参见:
    • getCollationKey

      public abstract CollationKey  getCollationKey(String  source)
      将 String 转换为可以与其他 CollationKey 按位进行比较的一系列位。当 Strings 参与多重比较时,CollationKeys 提供比 Collator.compare 更好的性能。有关使用 CollationKeys 的示例,请参阅 Collator 类描述。
      参数:
      source - 要转换为归类键的字符串。
      返回:
      基于此 Collator 的整理规则的给定 String 的 CollationKey。如果源字符串为 null,则返回 null CollationKey。
      参见:
    • equals

      public boolean equals(String  source, String  target)
      基于此 Collator 的排序规则比较两个字符串是否相等的便捷方法。
      参数:
      source - 要与之比较的源字符串。
      target - 要与之比较的目标字符串。
      返回:
      如果字符串根据归类规则相等,则为真。假的,否则。
      参见:
    • getStrength

      public int getStrength()
      返回此 Collator 的强度属性。强度属性决定了在比较过程中被认为是显着的最小差异水平。有关使用示例,请参阅 Collator 类描述。
      返回:
      此 Collator 的当前强度属性。
      参见:
    • setStrength

      public void setStrength(int newStrength)
      设置此 Collator 的强度属性。强度属性决定了在比较过程中被认为是显着的最小差异水平。有关使用示例,请参阅 Collator 类描述。
      参数:
      newStrength - 新的强度值。
      抛出:
      IllegalArgumentException - 如果新强度值不是 PRIMARY、SECONDARY、TERTIARY 或 IDENTICAL 之一。
      参见:
    • getDecomposition

      public int getDecomposition()
      获取此 Collator 的分解模式。分解模式决定了如何处理 Unicode 组合字符。调整分解模式允许用户在更快和更完整的整理行为之间进行选择。

      分解模式的三个值是:

      • NO_DECOMPOSITION,
      • CANONICAL_DECOMPOSITION
      • FULL_DECOMPOSITION.
      请参阅这三个常量的文档以了解它们的含义。
      返回:
      分解模式
      参见:
    • setDecomposition

      public void setDecomposition(int decompositionMode)
      设置此 Collator 的分解模式。有关分解模式的说明,请参阅 getDecomposition。
      参数:
      decompositionMode - 新的分解模式。
      抛出:
      IllegalArgumentException - 如果给定值不是有效的分解模式。
      参见:
    • getAvailableLocales

      public static Locale [] getAvailableLocales()
      返回一个包含所有locale的数组,此类的 getInstance 方法可以为其返回本地化实例。返回的数组表示 Java 运行时和已安装的 CollatorProvider 实现支持的locale的联合。至少,返回的数组必须包含一个等于 Locale.ROOT Locale 实例和一个等于 Locale.US Locale 实例。
      返回:
      本地化 Collator 实例可用的locale数组。
    • clone

      public Object  clone()
      重写可克隆
      重写:
      clone 在类 Object
      返回:
      此实例的克隆。
      参见:
    • equals

      public boolean equals(Object  that)
      比较两个 Collator 的相等性。
      指定者:
      equals 在接口 Comparator<Object>
      重写:
      equals 在类 Object
      参数:
      that - 要与之比较的 Collator。
      返回:
      如果此 Collator 与那个 Collator 相同,则为 true;否则为假。
      参见:
    • hashCode

      public abstract int hashCode()
      为此 Collator 生成哈希码。
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见: