JavaTM Platform
Standard Ed. 6

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 のクラスの説明を参照してください。

関連項目:
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()
          デフォルトのコンストラクタです。
 
メソッドの概要
 Object clone()
          Cloneable をオーバーライドします。
 int compare(Object o1, Object o2)
          順序付けのために 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[] getAvailableLocales()
          このクラスの getInstance メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。
abstract  CollationKey getCollationKey(String source)
          String を、ほかの CollationKey とビット単位で比較可能なビット列に変換します。
 int getDecomposition()
          Collator の分解モードを取得します。
static Collator getInstance()
          現在のデフォルトロケールに対する Collator を取得します。
static Collator getInstance(Locale desiredLocale)
          必要なロケールの Collator を取得します。
 int getStrength()
          Collator の強さ属性を返します。
abstract  int hashCode()
          Collator のハッシュコードを生成します。
 void setDecomposition(int decompositionMode)
          Collator の分解モードを設定します。
 void setStrength(int newStrength)
          Collator の強さ属性を返します。
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

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 - ターゲット文字列
戻り値:
整数値。ソースがターゲットより小さければ、値はゼロより小さい。ソースがターゲットと等しければ、値はゼロ。ソースがターゲットより大きければ、値はゼロより大きい
関連項目:
CollationKey, getCollationKey(java.lang.String)

compare

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

この実装は単純に次のコードを返します。 compare((String)o1, (String)o2)

定義:
インタフェース Comparator<Object> 内の compare
パラメータ:
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 が返される
関連項目:
CollationKey, compare(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 つの値があります。

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

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

setDecomposition

public void setDecomposition(int decompositionMode)
Collator の分解モードを設定します。分解モードの説明については、getDecomposition を参照してください。

パラメータ:
decompositionMode - 新しい分解モード
例外:
IllegalArgumentException - 指定された値が有効な分解モードでない場合
関連項目:
getDecomposition(), NO_DECOMPOSITION, CANONICAL_DECOMPOSITION, FULL_DECOMPOSITION

getAvailableLocales

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

戻り値:
ローカライズされた Collator インスタンスを使用可能なロケールの配列

clone

public Object clone()
Cloneable をオーバーライドします。

オーバーライド:
クラス Object 内の clone
戻り値:
このインスタンスの複製
関連項目:
Cloneable

equals

public boolean equals(Object that)
2 つの Collator が等しいかどうかを比較します。

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

hashCode

public abstract int hashCode()
Collator のハッシュコードを生成します。

オーバーライド:
クラス Object 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。