Module java.base
Package java.text

Class CollationKey

java.lang.Object
java.text.CollationKey
所有已实现的接口:
Comparable<CollationKey>

public abstract class CollationKey extends Object implements Comparable<CollationKey>
一个CollationKey代表了一个String在特定Collator对象的规则下。比较两个CollationKey会返回它们代表的String的相对顺序。使用CollationKey比较String通常比使用Collator.compare更快。因此,当需要多次比较String时,例如对String列表进行排序时,使用CollationKey更有效率。

你不能直接创建CollationKey。相反,通过调用Collator.getCollationKey来生成它们。只能比较由同一个Collator对象生成的CollationKey

String生成CollationKey涉及检查整个String并将其转换为可以按位比较的一系列位。一旦生成了键,就可以快速进行比较。生成键的成本在需要多次比较String时会得到回收。另一方面,比较的结果通常由每个String的前几个字符决定。 Collator.compare只检查它需要的字符数,这使得在进行单个比较时更快。

以下示例展示了如何使用CollationKeyString列表进行排序。

// 为要排序的字符串创建CollationKeys数组。
Collator myCollator = Collator.getInstance();
CollationKey[] keys = new CollationKey[3];
keys[0] = myCollator.getCollationKey("Tom");
keys[1] = myCollator.getCollationKey("Dick");
keys[2] = myCollator.getCollationKey("Harry");
sort(keys);

//...

// 在sort例程的主体内部,以这种方式比较键
if (keys[i].compareTo(keys[j]) > 0)
   // 交换keys[i]和keys[j]

//...

// 最后,当我们从sort返回时。
System.out.println(keys[0].getSourceString());
System.out.println(keys[1].getSourceString());
System.out.println(keys[2].getSourceString());
自版本:
1.1
参见:
  • Constructor Details

    • CollationKey

      protected CollationKey(String source)
      CollationKey构造函数。
      参数:
      source - 源字符串
      抛出:
      NullPointerException - 如果source为null
      自版本:
      1.6
  • Method Details

    • compareTo

      public abstract int compareTo(CollationKey target)
      将此CollationKey与目标CollationKey进行比较。应用创建这些键的Collator对象的排序规则。注意: 由不同Collator创建的CollationKeys无法进行比较。
      指定者:
      compareTo 在接口 Comparable<CollationKey>
      参数:
      target - 目标CollationKey
      返回:
      返回一个整数值。如果此小于目标,则值小于零,如果此和目标相等,则值为零,如果此大于目标,则值大于零。
      参见:
    • getSourceString

      public String getSourceString()
      返回此CollationKey代表的字符串。
      返回:
      此CollationKey的源字符串
    • toByteArray

      public abstract byte[] toByteArray()
      将CollationKey转换为一系列位。如果两个CollationKeys可以合法比较,则可以比较每个键的字节数组以获得相同的结果。字节数组按最重要字节优先排序。
      返回:
      CollationKey的字节数组表示