全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.text.CollationKey
CollationKeyは、特定の Collatorオブジェクトのルールのもとにある Stringを表します。2つの CollationKeyを比較すると、それらが表す Stringの相対順序が返されます。CollationKeyを使って Stringを比較する方が一般に Collator.compareよりも高速です。したがって、複数の Stringを何回も比較する場合(たとえば、Stringのリストをソートする場合)には、CollationKeyを使う方が効率的です。
 CollationKeyを直接作成することはできません。それらを生成するには、Collator.getCollationKeyを呼び出す必要があります。CollationKeyを比較する場合、それらは同じ Collatorオブジェクトから生成しなければなりません。
 
Stringの CollationKeyを生成するためには、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() );
 
 
 
 compareTo(CollationKey)
	compareTo(CollationKey)
   equals(Object)
	equals(Object)
   getSourceString()
	getSourceString()
   hashCode()
	hashCode()
   toByteArray()
	toByteArray()
   
 compareTo
compareTo
public int compareTo(CollationKey target)
 equals
equals
public boolean equals(Object target)
 hashCode
hashCode
public int hashCode()
 getSourceString
getSourceString
public String getSourceString()
 toByteArray
toByteArray
public byte[] toByteArray()
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス