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 つのレベル PRIMARY、SECONDARY、TERTIARY、IDENTICAL があります。どの言語の機能にどのレベルを割り当てるかは、正確にはロケールによって異なります。たとえば、チェコ語では、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 を使用したほうがよいパフォーマンスを得られます。CollationKey は String をビット列に変換したものであり、ほかの CollationKey とビット単位で比較できます。CollationKey は、特定の String に対して Collator オブジェクトによって作成されます。
注: 異なる Collator によって作成され CollationKey 同士は比較できません。CollationKey の使用例については、CollationKey のクラスの説明を参照してください。
| 修飾子と型 | フィールドと説明 |
|---|---|
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 の強さ属性を返します。
|
public static final int PRIMARY
public static final int SECONDARY
public static final int TERTIARY
public static final int IDENTICAL
public static final int NO_DECOMPOSITION
public static final int CANONICAL_DECOMPOSITION
CANONICAL_DECOMPOSITION は、「Unicode Technical Report #15」で説明されている Normalization Form D に相当します。
public static final int FULL_DECOMPOSITION
FULL_DECOMPOSITION は、「Unicode Technical Report #15」で説明されている Normalization Form KD に相当します。
protected Collator()
getInstance()public static Collator getInstance()
Locale.getDefault()public static Collator getInstance(Locale desiredLocale)
desiredLocale - 目的のロケール。Locale, ResourceBundlepublic abstract int compare(String source, String target)
1 回だけの比較であれば、このメソッドのパフォーマンスがもっとも優れています。指定された文字列で複数回の比較が必要であれば、CollationKey.compareTo のパフォーマンスがもっとも優れています。CollationKey の使用例については、Collator クラスの説明を参照してください。
source - ソース文字列。target - ターゲット文字列。CollationKey、getCollationKey(java.lang.String)public int compare(Object o1, Object o2)
この実装では、単に compare((String)o1, (String)o2) が返されるだけです。
compare、インタフェース: Comparator<Object>o1 - 比較対象の最初のオブジェクト。o2 - 比較対象の 2 番目のオブジェクト。ClassCastException - 引数を String にキャストできない場合。Comparatorpublic abstract CollationKey getCollationKey(String source)
source - 照合キーに変換する文字列。CollationKey、compare(java.lang.String, java.lang.String)public boolean equals(String source, String target)
source - 比較対象のソース文字列。target - 比較対象のターゲット文字列。compare(java.lang.String, java.lang.String)public int getStrength()
setStrength(int), PRIMARY, SECONDARY, TERTIARY, IDENTICALpublic void setStrength(int newStrength)
newStrength - 強さ属性の新しい値。IllegalArgumentException - 新しい強さを示す値が PRIMARY、SECONDARY、TERTIARY、IDENTICAL のどれでもない場合。getStrength(), PRIMARY, SECONDARY, TERTIARY, IDENTICALpublic int getDecomposition()
分解モードには次の 3 つの値があります。
setDecomposition(int), NO_DECOMPOSITION, CANONICAL_DECOMPOSITION, FULL_DECOMPOSITIONpublic void setDecomposition(int decompositionMode)
decompositionMode - 新しい分解モード。IllegalArgumentException - 指定された値が有効な分解モードでない場合。getDecomposition(), NO_DECOMPOSITION, CANONICAL_DECOMPOSITION, FULL_DECOMPOSITIONpublic static Locale[] getAvailableLocales()
getInstance メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。返される配列は、Java ランタイムおよびインストールされている CollatorProvider 実装によってサポートされているロケールの和集合を表します。これには、Locale.US と等価な Locale インスタンスが少なくとも 1 つ含まれている必要があります。Collator インスタンスを使用可能なロケールの配列。public Object clone()
public boolean equals(Object that)
equals、インタフェース: Comparator<Object>equals、クラス: Objectthat - 比較対照の Collator。Object.hashCode()、HashMappublic abstract int hashCode()
hashCode、クラス: ObjectObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object) バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.