モジュール java.base
パッケージ java.text

クラスCollationKey

java.lang.Object
java.text.CollationKey
すべての実装されたインタフェース:
Comparable<CollationKey>

public abstract class CollationKey extends Object implements Comparable<CollationKey>
CollationKeyは、特定のCollatorオブジェクトのルールのもとにあるStringを表します。 2つのCollationKeyオブジェクトを比較すると、それらが表すStringの相対的な順序が返されます。 CollationKeyを使用してStringを比較する方が一般にCollator.compareよりも高速です。 したがって、複数のStringを何回も比較する場合(たとえば、Stringのリストをソートする場合)には、 CollationKeyを使う方が効率的です。

CollationKeyを直接作成することはできません。 それらを生成するには、Collator.getCollationKeyを呼び出す必要があります。 CollationKeyを比較する場合、それらは同じCollatorオブジェクトから生成しなければいけません。

StringCollationKeyを生成するためには、String全体を調べ、それを、ビット単位で比較できるビット列に変換する必要があります。 こうすると、キーが生成されたあとで、比較が高速に行われます。 キーを生成するコストは、Stringを何回も比較する必要がある場合には、高速な比較によって埋め合わせることができます。 一方、比較の結果は、それぞれのStringの最初の2文字で決まることがよくあります。 Collator.compareでは、必要な文字数だけが比較されるので、単一の比較ではこの方が高速です。

次の例は、CollationKeyを使って、Stringのリストをソートする場合を示したものです。

// Create an array of CollationKeys for the Strings to be sorted.
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);

//...

// Inside body of sort routine, compare keys this way
if (keys[i].compareTo(keys[j]) > 0)
   // swap keys[i] and keys[j]

//...

// Finally, when we've returned from sort.
System.out.println(keys[0].getSourceString());
System.out.println(keys[1].getSourceString());
System.out.println(keys[2].getSourceString());

導入されたバージョン:
1.1
関連項目: