モジュール java.base
パッケージ java.text

クラスCollationElementIterator


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

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

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

    イテレータの使用例

    
      String testString = "This is a test";
      Collator col = Collator.getInstance();
      if (col instanceof RuleBasedCollator) {
          RuleBasedCollator ruleBasedCollator = (RuleBasedCollator)col;
          CollationElementIterator collationElementIterator = ruleBasedCollator.getCollationElementIterator(testString);
          int primaryOrder = CollationElementIterator.primaryOrder(collationElementIterator.next());
              :
      }
     

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

    注: CollationElementIteratorRuleBasedCollator実装の一部です。 RuleBasedCollatorインスタンスとともにしか使用できません。

    導入されたバージョン:
    1.1
    関連項目:
    CollatorRuleBasedCollator
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      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​(String source)
      反復処理の対象となる新しい文字列を設定します。
      void setText​(CharacterIterator source)
      反復処理の対象となる新しい文字列を設定します。
      static short tertiaryOrder​(int order)
      照合要素の第3成分を返します。
    • フィールドの詳細

      • 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のマッピングが必ずしも存在しないため、これは、文字列の1つ前の文字の照合要素[順序の優先順位]を返すこととは異なります。

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

        戻り値:
        前の照合要素
        導入されたバージョン:
        1.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 - 元のテキストへの新しい文字オフセット。
        導入されたバージョン:
        1.2
      • getOffset

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

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

        public void setText​(String source)
        反復処理の対象となる新しい文字列を設定します。
        パラメータ:
        source - 新しいソース・テキスト
        導入されたバージョン:
        1.2
      • setText

        public void setText​(CharacterIterator source)
        反復処理の対象となる新しい文字列を設定します。
        パラメータ:
        source - 新しいソース・テキスト。
        導入されたバージョン:
        1.2