モジュール java.base
パッケージ 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
    関連項目:
    CollatorRuleBasedCollator
    • コンストラクタの詳細

      • CollationKey

        protected CollationKey​(String source)
        CollationKeyのコンストラクタです。
        パラメータ:
        source - ソース文字列
        例外:
        NullPointerException - sourceがnullである場合
        導入されたバージョン:
        1.6
    • メソッドの詳細

      • compareTo

        public abstract int compareTo​(CollationKey target)
        このCollationKeyをターゲットのCollationKeyと比較します。 これらのキーを作成したCollatorオブジェクトの照合ルールが適用されます。 注: 異なるCollatorで作成したCollationKeyは比較できません。
        定義:
        compareTo、インタフェース: Comparable<CollationKey>
        パラメータ:
        target - ターゲットのCollationKey
        戻り値:
        整数値。 これがターゲットより小さければ、値はゼロより小さい。これがターゲットと等しければ、値はゼロ。これがターゲットより大きければ、値はゼロより大きい
        関連項目:
        Collator.compare(java.lang.String, java.lang.String)
      • getSourceString

        public String getSourceString​()
        このCollationKeyが表すStringを返します。
        戻り値:
        このCollationKeyのソース文字列
      • toByteArray

        public abstract byte[] toByteArray​()
        CollationKeyをビット列に変換します。 2つのCollationKeyが正しく比較できる場合は、これらの配列のそれぞれに対するバイト配列を比較しても同じ結果が得られます。 バイト配列では、もっとも大きなバイトが最初にあります。
        戻り値:
        CollationKeyのバイト配列表現