モジュール 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オブジェクトによって作成されます。

APIのノート:
異なるCollatorCollationKeyは比較できません。 CollationKeyの使用例については、CollationKeyのクラスの説明を参照してください。
導入されたバージョン:
1.1
関連項目: