JavaTM 2
Platform
Std. Ed. v1.4.0

java.text
クラス CollationKey

java.lang.Object
  |
  +--java.text.CollationKey
すべての実装インタフェース:
Comparable

public final class CollationKey
extends Object
implements Comparable

CollationKey は、特定の Collator オブジェクトのルールのもとにある String を表します。2 つの CollationKey を比較すると、それらが表す String の相対順序が返されます。CollationKey を使って String を比較する方が一般に Collator.compare よりも高速です。したがって、複数の String を何回も比較する場合 (たとえば、String のリストをソートする場合) には、CollationKey を使う方が効率的です。

CollationKey を直接作成することはできません。それらを生成するには、Collator.getCollationKey を呼び出す必要があります。CollationKey を比較する場合、それらは同じ Collator オブジェクトから生成しなければなりません。

StringCollationKey を生成するためには、String 全体を調べ、それを、ビット単位で比較できるビット列に変換する必要があります。こうすると、キーが生成されたあとで、比較が高速に行われます。キーを生成するコストは、String を何回も比較する必要がある場合には、高速な比較によって埋め合せることができます。一方、比較の結果は、それぞれの String の最初の 2 文字で決まることがよくあります。Collator.compare では、必要な文字数だけが比較されるので、単一の比較ではこの方が高速です。

次の例は、CollationKey を使って、String のリストをソートする場合を示したものです。

 // Create an array of CollationKeys for the Strings to be sorted.
 Collator myCollator = Collator.getInstance();
 CollationKey[] keys = new CollationKey[3];
 keys[0] = myCollator.getCollationKey("Tom");
 keys[1] = myCollator.getCollationKey("Dick");
 keys[2] = myCollator.getCollationKey("Harry");
 sort( keys );
 
//...
// Inside body of sort routine, compare keys this way if( keys[i].compareTo( keys[j] ) > 0 ) // swap keys[i] and keys[j]
//...
// Finally, when we've returned from sort. System.out.println( keys[0].getSourceString() ); System.out.println( keys[1].getSourceString() ); System.out.println( keys[2].getSourceString() );

関連項目:
Collator, RuleBasedCollator

メソッドの概要
 int compareTo(CollationKey target)
          この CollationKey をターゲットの CollationKey と比較します。
 int compareTo(Object o)
          CollationKey と、指定された Object の順序を比較します。
 boolean equals(Object target)
          CollationKey とターゲットの CollationKey が等しいかどうかを比較します。
 String getSourceString()
          この CollationKey が表す String を返します。
 int hashCode()
          CollationKey のハッシュコードを作成します。
 byte[] toByteArray()
          CollationKey をビット列に変換します。
 
クラス java.lang.Object から継承したメソッド
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

compareTo

public int compareTo(CollationKey target)
この CollationKey をターゲットの CollationKey と比較します。これらのキーを作成した Collator オブジェクトの照合ルールが適用されます。注: 異なる Collator で作成した CollationKey は比較できません。

パラメータ:
target - ターゲットの CollationKey
戻り値:
整数値。これがターゲットより小さければ、値はゼロより小さい。これがターゲットと等しければ、値はゼロ。これがターゲットより大きければ、値はゼロより大きい
関連項目:
Collator.compare(java.lang.String, java.lang.String)

compareTo

public int compareTo(Object o)
CollationKey と、指定された Object の順序を比較します。CollationKey が指定された Object より小さい場合は負の整数、等しい場合は 0、大きい場合は正の整数をそれぞれ返します。

定義:
インタフェース Comparable 内の compareTo
パラメータ:
o - 比較対象の Object
戻り値:
CollationKey が指定された Object より小さい場合は負の整数、等しい場合は 0、大きい場合は正の整数
例外:
ClassCastException - 指定された Object が CollationKey ではない場合
導入されたバージョン:
1.2
関連項目:
Comparable

equals

public boolean equals(Object target)
CollationKey とターゲットの CollationKey が等しいかどうかを比較します。これらのキーを作成した Collator オブジェクトの照合ルールが適用されます。注: 異なる Collator で作成した CollationKey は比較できません。

オーバーライド:
クラス Object 内の equals
パラメータ:
target - 比較対象の CollationKey
戻り値:
2 つのオブジェクトが等しい場合は true、そうでない場合は false
関連項目:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
CollationKey のハッシュコードを作成します。ハッシュ値は、キー自体から計算されるのであって、そのキーが作成された String から作成されるのではありません。したがって、x と y が CollationKey の場合、x.equals(y) が true であれば、x.hashCode(x) == y.hashCode() です。これによって、ハッシュテーブルで言語に依存する比較を行うことができます。例については、CollatinKey クラスの説明を参照してください。

オーバーライド:
クラス Object 内の hashCode
戻り値:
文字列の照合順序に基づくハッシュ値
関連項目:
Object.equals(java.lang.Object), Hashtable

getSourceString

public String getSourceString()
この CollationKey が表す String を返します。


toByteArray

public byte[] toByteArray()
CollationKey をビット列に変換します。2 つの CollationKey が正しく比較できる場合は、これらの配列のそれぞれに対するバイト配列を比較しても同じ結果が得られます。バイト配列では、もっとも大きなバイトが最初にあります。


JavaTM 2
Platform
Std. Ed. v1.4.0

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

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.