JavaTM 2 Platform
Std. Ed. v1.3

java.text
クラス CollationElementIterator

java.lang.Object
  |
  +--java.text.CollationElementIterator

public final class CollationElementIterator
extends Object

CollationElementIterator クラスは、各国語文字列の各文字を処理するときの反復子として使用します。反復子は、位置付けされた文字の順序の優先順位を返すのに使用されます。順序の優先順位 (キーと呼ぶ) は、指定された照合オブジェクトにおいて、ある文字がどのように照合されるかを定義するものです。

スペイン語の例を示します。

 "ca" -> 最初のキーは ('c')、2 番目のキーは ('a') です。
 "cha" -> 最初のキーは ('ch')、2 番目のキーは ('a') です。
 
さらに、ドイツ語の例を示します。
 "äb" -> 最初のキーは ('a')、2 番目のキーは ('e')、
 3 番目のキーは ('b') です。
 
文字のキーは、第 1 順序 (short)、第 2 順序 (byte)、第 3 順序 (byte) からなる整数です。Java では、その基本データ型のサイズと符号の有無が厳密に定義されます。したがって、static 関数 primaryOrdersecondaryOrdertertiaryOrder は、キー値の正確性を確保するために、それぞれ intshortshort を返します。

反復子の使用例

 // get the first key of the string
 String str = "This is a test";
 CollationElementIterator c =
     new CollationElementIterator(str, 0, str.length(),
                                  Collator.getInstance());
 int primaryOrder = CollationElementIterator.primaryOrder(c->next());
 

CollationElementIterator.next は、次の文字の照合順序を返します。照合順序は、第 1 順序、第 2 順序、第 3 順序からなります。照合順序のデータ型は int です。照合順序の最初の 16 ビットがその第 1 順序、次の 8 ビットが第 2 順序、最後の 8 ビットが第 3 順序です。

関連項目:
Collator, RuleBasedCollator

フィールドの概要
static int NULLORDER
          カーソルが文字列の終わりに達したことを示す null 順序です。
 
メソッドの概要
 int getMaxExpansion(int order)
          指定された比較順序で終わるすべての展開シーケンスの最大長を返します。
 int getOffset()
          次の照合要素に対応する元のテキスト内の文字オフセットを返します。
 int next()
          文字列の次の照合要素を取得します。
 int previous()
          文字列の前の照合要素を取得します。
static int primaryOrder(int order)
          照合要素の第 1 成分を返します。
 void reset()
          カーソルを文字列の先頭にリセットします。
static short secondaryOrder(int order)
          照合要素の第 2 成分を返します。
 void setOffset(int newOffset)
          反復子が指定された文字に対応する照合要素を示すように設定します。
 void setText(CharacterIterator source)
          繰り返し処理の対象となる新しい文字列を設定します。
 void setText(String source)
          繰り返し処理の対象となる新しい文字列を設定します。
static short tertiaryOrder(int order)
          照合要素の第 3 成分を返します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

NULLORDER

public static final int NULLORDER
カーソルが文字列の終わりに達したことを示す null 順序です。
メソッドの詳細

reset

public void reset()
カーソルを文字列の先頭にリセットします。next() を次に呼び出すと、文字列の最初の照合要素が返されます。

next

public int next()
文字列の次の照合要素を取得します。

この反復子は、その文字列で作成された照合要素のシーケンス対して繰り返し処理を実行します。文字から照合要素への 1 対 1 のマッピングが必ずしも存在しないため、これは、「文字列の次の文字の照合要素 [順序の優先順位] を返す」こととは異なります。

この関数は、反復子が現在示している照合要素を返してから、内部ポインタを更新して次の要素を示します。それに対して、previous() は最初にポインタを更新してから要素を返します。これは、繰り返し処理中に方向を変更すると (つまり、next() を呼び出してから previous() を呼び出すか、previous() を呼び出してから next() を呼び出す)、同じ要素を 2 回戻すことを意味します。


previous

public int previous()
文字列の前の照合要素を取得します。

この反復子は、その文字列で作成された照合要素シーケンスに対して繰り返し処理を実行します。文字から照合要素への 1 対 1 のマッピングが必ずしも存在しないため、これは、「文字列の前の文字の照合要素 [順序の優先順位] を返す」こととは異なります。

この関数は、反復子の内部ポインタを更新して現在示している照合要素の前の照合要素を示してから、要素を返します。それに対して、next() は現在の要素を返してからポインタを更新します。これは、繰り返し処理中に方向を変更する場合 (つまり、next() を呼び出してから previous() を呼び出すか、previous() を呼び出してから next() を呼び出す)、同じ要素を 2 回戻すことを意味します。


primaryOrder

public static final int primaryOrder(int order)
照合要素の第 1 成分を返します。
パラメータ:
order - 照合要素
戻り値:
要素の第 1 成分

secondaryOrder

public static final short secondaryOrder(int order)
照合要素の第 2 成分を返します。
パラメータ:
order - 照合要素
戻り値:
要素の第 2 成分

tertiaryOrder

public static final short tertiaryOrder(int order)
照合要素の第 3 成分を返します。
パラメータ:
order - 照合要素
戻り値:
要素の第 3 成分

setOffset

public void setOffset(int newOffset)
反復子が指定された文字に対応する照合要素を示すように設定します。パラメータは、元の文字列の文字オフセットであり、照合要素の対応するシーケンスへのオフセットではありません。next() の次の呼び出しで返される値は、テキスト内の指定された位置に対応する照合要素になります。その位置が縮小文字シーケンスの中にある場合、next() を次に呼び出した結果は、そのシーケンスの照合要素になります。つまり、getOffset() は、setOffset() を前に呼び出しときに渡された値と同じ値を返さない場合があります。
パラメータ:
newOffset - 元のテキストへの新しい文字オフセット

getOffset

public int getOffset()
次の照合要素に対応する元のテキスト内の文字オフセットを返します。つまり、getOffset() は、next() の次の呼び出しで返される照合要素に対応するテキスト内の位置を返します。この値は常に照合要素に対応する最初の文字のインデックスになります (2 つ以上のすべての文字が同じ照合要素に対応する場合は縮小文字シーケンス)。つまり、setOffset(x) の直後に getOffset() を実行すると、getOffset() は x を返さない場合もあります。
戻り値:
next() の次の呼び出しで返される照合要素に対応する元のテキスト内の文字オフセット

getMaxExpansion

public int getMaxExpansion(int order)
指定された比較順序で終わるすべての展開シーケンスの最大長を返します。
パラメータ:
order - previous または next が返す照合順序
戻り値:
指定された順序で終わるすべての展開シーケンスの最大長

setText

public void setText(String source)
繰り返し処理の対象となる新しい文字列を設定します。
パラメータ:
str - 新しいソーステキスト

setText

public void setText(CharacterIterator source)
繰り返し処理の対象となる新しい文字列を設定します。
パラメータ:
str - 新しいソーステキスト

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

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