モジュール 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クラスでは、ロケールに依存した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
関連項目:
  • フィールドのサマリー

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

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    デフォルトのコンストラクタです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    Cloneableをオーバーライドします。
    int
    順序付けのために2つの引数を比較します。
    abstract int
    compare(String source, String target)
    Collatorの照合ルールに従って、ソース文字列とターゲット文字列を比較します。
    boolean
    equals(Object that)
    2つのCollatorが等しいかどうかを比較します。
    boolean
    equals(String source, String target)
    Collatorの照合ルールに従って2つの文字列が等しいかどうかを比較するための簡易メソッドです。
    static Locale[]
    このクラスのgetInstanceメソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。
    abstract CollationKey
    Stringを、ほかのCollationKeyとビット単位で比較可能なビット列に変換します。
    int
    Collatorの分解モードを取得します。
    static Collator
    現在のデフォルト・ロケールに対するCollatorを取得します。
    static Collator
    getInstance(Locale desiredLocale)
    必要なロケールのCollatorを取得します。
    int
    Collatorの強さ属性を返します。
    abstract int
    Collatorのハッシュ・コードを生成します。
    void
    setDecomposition(int decompositionMode)
    Collatorの分解モードを設定します。
    void
    setStrength(int newStrength)
    Collatorの強さ属性を返します。

    クラス java.lang.Objectで宣言されたメソッド

    finalize, getClass, notify, notifyAll, toString, wait, wait, wait

    インタフェース java.util.Comparatorで宣言されたメソッド

    reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
  • フィールド詳細

    • PRIMARY

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

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

      public static final int TERTIARY
      Collatorの強さを示す値です。 これを設定すると、比較の際に、TERTIARYの相違だけが相違とみなされます。 言語機能への強みの割り当ては、ロケールに依存します。 共通の例としては、ケースの違い(aとA)がTERTIARYの相違とみなされます。
      関連項目:
    • 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を設定すると、アクセントの付いた文字を照合のために分解することはしません。 これがデフォルトの設定であり、照合は最速ですが、アクセント記号を使わない言語の場合でしか正しい結果は得られません。
      関連項目:
    • CANONICAL_DECOMPOSITION

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

      CANONICAL_DECOMPOSITIONは、「Unicode Standard Annex #15: Unicode正規化フォーム」で説明されている正規化フォームDに対応します。

      関連項目:
    • FULL_DECOMPOSITION

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

      FULL_DECOMPOSITIONは、「Unicode Standard Annex #15: Unicode正規化フォーム」で説明されている正規化フォームKDに対応します。

      関連項目:
  • コンストラクタの詳細

    • Collator

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

    • getInstance

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

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

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

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

      パラメータ:
      source - ソース文字列。
      target - ターゲット文字列。
      戻り値:
      整数値。 ソースがターゲットより小さければ、値はゼロより小さい。ソースがターゲットと等しければ、値はゼロ。ソースがターゲットより大きければ、値はゼロより大きい。
      関連項目:
    • 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
      関連項目:
    • getCollationKey

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

      public boolean equals(String source, String target)
      Collatorの照合ルールに従って2つの文字列が等しいかどうかを比較するための簡易メソッドです。
      パラメータ:
      source - 比較対象のソース文字列。
      target - 比較対象のターゲット文字列。
      戻り値:
      照合ルールに従ってそれらの文字列が等しい場合はtrue、そうでない場合はfalse。
      関連項目:
    • 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で構成された文字をどのように処理するかが決まります。 分解モードを調整すれば、速い照合動作と完全な照合動作の間で必要なものを選択することができます。

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

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

      戻り値:
      分解モード
      関連項目:
    • setDecomposition

      public void setDecomposition(int decompositionMode)
      Collatorの分解モードを設定します。 分解モードの説明については、getDecompositionを参照してください。
      パラメータ:
      decompositionMode - 新しい分解モード。
      例外:
      IllegalArgumentException - 指定された値が有効な分解モードでない場合。
      関連項目:
    • getAvailableLocales

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

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

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

      public abstract int hashCode()
      Collatorのハッシュ・コードを生成します。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      このオブジェクトのハッシュ・コード値。
      関連項目: