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

クラスCollator

  • すべての実装されたインタフェース:
    Cloneable, Comparator<Object>
    直系の既知のサブクラス:
    RuleBasedCollator

    public abstract class Collator
    extends Object
    implements Comparator<Object>, Cloneable
    Collatorクラスでは、ロケールに依存したStringの比較が行われます。 このクラスを使って、自然言語テキストの検索とソートのルーチンを構築します。

    Collatorは、抽象基底クラスです。 サブクラスによって、特定の照合方法を実装します。 現在では、1つのサブクラスRuleBasedCollatorがJavaプラットフォームで提供されており、広範囲の言語に適用可能です。 さらに特殊な必要性がある場合には、ほかのサブクラスを作成できます。

    ロケールに依存するほかのクラスと同じように、staticファクトリ・メソッドgetInstanceを使って、あるロケールに対する適切なCollatorオブジェクトを得ることができます。 特定の照合方法の詳細を理解したり、その方法を修正したりする場合には、Collatorのサブクラスを見るだけで十分です。

    次の例は、デフォルト・ロケールのCollatorを使って2つの文字列を比較する方法を示したものです。

    
     // 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");
     

    Collator強さプロパティを設定すれば、比較で重要とみなされる相違レベルを決定できます。 4つのレベルPRIMARYSECONDARYTERTIARYIDENTICALがあります。 言語機能への強みの正確な割り当ては、ロケールに依存します。 たとえば、チェコ語では、eとfは主要な(primary)相違とみなされますが、eとěは2次的(secondary)、eとEは3次的(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を1回だけ比較する場合、compareメソッドを使用すると最善のパフォーマンスが得られます。 一方、Stringリストをソートする場合は通常、各Stringを何回も比較しなければいけません。 そうした場合は、CollationKeyを使用したほうがよいパフォーマンスを得られます。 CollationKeyStringをビット列に変換したものであり、ほかのCollationKeyとビット単位で比較できます。 CollationKeyは、特定のStringに対してCollatorオブジェクトによって作成されます。
    注: 異なるCollatorによって作成されCollationKey同士は比較できません。
    CollationKeyの使用例については、CollationKeyのクラスの説明を参照してください。

    導入されたバージョン:
    1.1
    関連項目:
    RuleBasedCollator, CollationKey, CollationElementIterator, Locale
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static int CANONICAL_DECOMPOSITION
      分解モード値です。
      static int FULL_DECOMPOSITION
      分解モード値です。
      static int IDENTICAL
      Collatorの強さを示す値です。
      static int NO_DECOMPOSITION
      分解モード値です。
      static int PRIMARY
      Collatorの強さを示す値です。
      static int SECONDARY
      Collatorの強さを示す値です。
      static int TERTIARY
      Collatorの強さを示す値です。
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected Collator()
      デフォルトのコンストラクタです。
    • フィールドの詳細

      • PRIMARY

        public static final int PRIMARY
        Collatorの強さを示す値です。 これを設定すると、比較の際に、PRIMARYの相違だけが相違とみなされます。 言語機能への強みの割り当ては、ロケールに依存します。 共通の例としては、異なる基本文字(aとb)がPRIMARYの相違とみなされます。
        関連項目:
        setStrength(int)getStrength()定数フィールド値
      • SECONDARY

        public static final int SECONDARY
        Collatorの強さを示す値です。 これを設定すると、比較の際に、SECONDARY以上の相違だけが相違とみなされます。 言語機能への強みの割り当ては、ロケールに依存します。 共通の例としては、同じ基本文字のアクセントが異なる形式(aとä)がSECONDARYの相違とみなされます。
        関連項目:
        setStrength(int)getStrength()定数フィールド値
      • TERTIARY

        public static final int TERTIARY
        Collatorの強さを示す値です。 これを設定すると、比較の際に、TERTIARYの相違だけが相違とみなされます。 言語機能への強みの割り当ては、ロケールに依存します。 共通の例としては、ケースの違い(aとA)がTERTIARYの相違とみなされます。
        関連項目:
        setStrength(int)getStrength()定数フィールド値
      • IDENTICAL

        public static final int IDENTICAL
        Collatorの強さを示す値です。 これを設定すると、比較の際に、すべての相違が相違とみなされます。 言語機能への強みの割り当ては、ロケールに依存します。 共通の例としては、制御文字(\u0001と\u0002)がPRIMARY、SECONDARY、TERTIARYで等しいとみなされ、IDENTICALで相違とみなされます。 さらに、u00C0 (A-低アクセント記号)などの事前合成済みのアクセントとA\u0300 (A、結合低アクセント記号)などの結合アクセントの相違は、分解がNO_DECOMPOSITIONに設定されている場合にはIDENTICALで相違とみなされます。
        関連項目:
        定数フィールド値
      • NO_DECOMPOSITION

        public static final int NO_DECOMPOSITION
        分解モード値です。 NO_DECOMPOSITIONを設定すると、アクセントの付いた文字を照合のために分解することはしません。 これがデフォルトの設定であり、照合は最速ですが、アクセント記号を使わない言語の場合でしか正しい結果は得られません。
        関連項目:
        getDecomposition()setDecomposition(int)定数フィールド値
      • CANONICAL_DECOMPOSITION

        public static final int CANONICAL_DECOMPOSITION
        分解モード値です。 CANONICAL_DECOMPOSITIONを設定すると、Unicode標準で正規の形式とされる文字は、照合のために分解されます。 アクセント付きの文字を正しく照合するには、これを使用する必要があります。

        CANONICAL_DECOMPOSITIONは、「Unicode Technical Report#15」で説明されているNormalization Form Dに相当します。

        関連項目:
        getDecomposition()setDecomposition(int)定数フィールド値
      • FULL_DECOMPOSITION

        public static final int FULL_DECOMPOSITION
        分解モード値です。 FULL_DECOMPOSITIONを設定すると、Unicode正規形式とUnicode互換形式が両方とも、照合のために分解されます。 この場合、アクセント付きの文字が照合されるだけでなく、特別な形式を持つ文字もその通常の形式で照合されます。 たとえば、半分幅と完全幅のASCII文字とカタカナ文字が一緒に照合されます。 FULL_DECOMPOSITIONはもっとも完全な方式で、もっとも遅い分解モードです。

        FULL_DECOMPOSITIONは、「Unicode Technical Report#15」で説明されているNormalization Form KDに相当します。

        関連項目:
        getDecomposition()setDecomposition(int)定数フィールド値
    • コンストラクタの詳細

      • Collator

        protected Collator()
        デフォルトのコンストラクタです。 このコンストラクタはprotectedなので、サブクラスからアクセスすることができます。 Collatorサブクラスを作成するには、ユーザーは一般にファクトリ・メソッドのgetInstanceを呼び出します。
        関連項目:
        getInstance()
    • メソッドの詳細

      • getInstance

        public static Collator getInstance()
        現在のデフォルト・ロケールに対するCollatorを取得します。 デフォルト・ロケールは、java.util.Locale.getDefaultによって判定することができます。
        戻り値:
        デフォルト・ロケールのCollator (たとえばen_US)。
        関連項目:
        Locale.getDefault()
      • getInstance

        public static Collator getInstance​(Locale desiredLocale)
        必要なロケールのCollatorを取得します。
        パラメータ:
        desiredLocale - 目的のロケール。
        戻り値:
        必要なロケールのCollator。
        関連項目:
        Locale, ResourceBundle
      • compare

        public abstract int compare​(String source,
                                    String target)
        Collatorの照合ルールに従って、ソース文字列とターゲット文字列を比較します。 ソース文字列がターゲット文字列に対して小さいか、等しいか、大きいかによって、ゼロより小さいか、等しいか、大きい整数を返します。 使用例については、Collatorクラスの説明を参照してください。

        1回だけの比較であれば、このメソッドのパフォーマンスがもっとも優れています。 指定された文字列で複数回の比較が必要であれば、CollationKey.compareToのパフォーマンスがもっとも優れています。 CollationKeyの使用例については、Collatorクラスの説明を参照してください。

        パラメータ:
        source - ソース文字列。
        target - ターゲット文字列。
        戻り値:
        整数値。 ソースがターゲットより小さければ、値はゼロより小さい。ソースがターゲットと等しければ、値はゼロ。ソースがターゲットより大きければ、値はゼロより大きい。
        関連項目:
        CollationKeygetCollationKey(java.lang.String)
      • compare

        public int compare​(Object o1,
                           Object o2)
        順序付けのために2つの引数を比較します。 最初の引数が2番目の引数より小さい場合は負の整数、両方が等しい場合は0、最初の引数が2番目の引数より大きい場合は正の整数を返します。

        この実装では、単に compare((String)o1,(String)o2) が返されるだけです。

        定義:
        compare、インタフェース: Comparator<Object>
        パラメータ:
        o1 - 比較対象の最初のオブジェクト。
        o2 - 比較対象の2番目のオブジェクト。
        戻り値:
        最初の引数が2番目の引数より小さい場合は負の整数、両方が等しい場合は0、最初の引数が2番目の引数より大きい場合は正の整数。
        例外:
        ClassCastException - 引数をStringにキャストできない場合。
        導入されたバージョン:
        1.2
        関連項目:
        Comparator
      • getCollationKey

        public abstract CollationKey getCollationKey​(String source)
        Stringを、ほかのCollationKeyとビット単位で比較可能なビット列に変換します。 Stringで複数回の比較が必要な場合は、Collator.compareよりもCollationKeyのパフォーマンスの方が優れています。 CollationKeyの使用例については、Collatorクラスの説明を参照してください。
        パラメータ:
        source - 照合キーに変換する文字列。
        戻り値:
        Collatorの照合ルールに基づく、指定されたStringに対するCollationKey。 ソースStringがnullの場合はnullのCollationKeyが返される。
        関連項目:
        CollationKeycompare(java.lang.String, java.lang.String)
      • equals

        public boolean equals​(String source,
                              String target)
        Collatorの照合ルールに従って2つの文字列が等しいかどうかを比較するための簡易メソッドです。
        パラメータ:
        source - 比較対象のソース文字列。
        target - 比較対象のターゲット文字列。
        戻り値:
        照合ルールに従ってそれらの文字列が等しい場合はtrue、そうでない場合はfalse。
        関連項目:
        compare(java.lang.String, java.lang.String)
      • getStrength

        public int getStrength()
        Collatorの強さ属性を返します。 強さ属性によって、比較の際に相違とみなす最小レベルが決まります。 使用例については、Collatorクラスの説明を参照してください。
        戻り値:
        Collatorの現在の強さ属性。
        関連項目:
        setStrength(int), PRIMARY, SECONDARY, TERTIARY, IDENTICAL
      • setStrength

        public void setStrength​(int newStrength)
        Collatorの強さ属性を返します。 強さ属性によって、比較の際に相違とみなす最小レベルが決まります。 使用例については、Collatorクラスの説明を参照してください。
        パラメータ:
        newStrength - 強さ属性の新しい値。
        例外:
        IllegalArgumentException - 新しい強さを示す値がPRIMARY、SECONDARY、TERTIARY、IDENTICALのどれでもない場合。
        関連項目:
        getStrength(), PRIMARY, SECONDARY, TERTIARY, IDENTICAL
      • getDecomposition

        public int getDecomposition()
        Collatorの分解モードを取得します。 分解モードによって、Unicodeで構成された文字をどのように処理するかが決まります。 分解モードを調整すれば、速い照合動作と完全な照合動作の間で必要なものを選択することができます。

        分解モードには次の3つの値があります。

        • NO_DECOMPOSITION
        • CANONICAL_DECOMPOSITION
        • FULL_DECOMPOSITION
        これらの意味については、これらの定数の説明を参照してください。

        戻り値:
        分解モード
        関連項目:
        setDecomposition(int), NO_DECOMPOSITION, CANONICAL_DECOMPOSITION, FULL_DECOMPOSITION
      • getAvailableLocales

        public static Locale[] getAvailableLocales()
        このクラスのgetInstanceメソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。 返される配列は、JavaランタイムおよびインストールされているCollatorProvider実装によってサポートされているロケールの和集合を表します。 これには、Locale.USと等価なLocaleインスタンスが少なくとも1つ含まれている必要があります。
        戻り値:
        ローカライズされたCollatorインスタンスを使用可能なロケールの配列。
      • clone

        public Object clone()
        Cloneableをオーバーライドします。
        オーバーライド:
        clone、クラス: Object
        戻り値:
        このインスタンスの複製。
        関連項目:
        Cloneable
      • equals

        public boolean equals​(Object that)
        2つのCollatorが等しいかどうかを比較します。
        定義:
        equals、インタフェース: Comparator<Object>
        オーバーライド:
        equals 、クラス:  Object
        パラメータ:
        that - 比較対照のCollator。
        戻り値:
        このCollatorが指定されたCollatorと等しい場合はtrue、そうでない場合はfalse
        関連項目:
        Object.hashCode()HashMap