クラスSpliterators.AbstractSpliterator<T>

java.lang.Object
java.util.Spliterators.AbstractSpliterator<T>
型パラメータ:
T - このスプリッタによって返される要素のタイプ
すべての実装されたインタフェース:
Spliterator<T>
含まれているクラス:
Spliterators

public abstract static class Spliterators.AbstractSpliterator<T> extends Object implements Spliterator<T>
制限付きの並列処理を許可するためにtrySplitを実装する抽象Spliteratorです。

拡張するクラスで実装する必要があるのは、tryAdvanceだけです。 拡張クラスは、より高性能な実装を提供できる場合は、forEachRemainingをオーバーライドする必要があります。

APIのノート:
バランスの取れた並列計算が可能になるように要素を効率よく分割することが不可能または困難な場合に、このクラスを利用してスプリッテレータを作成できます。

制限付きの並列処理を許可するもう1つの方法として、このクラスを使用するかわりに、イテレータからスプリッテレータを作成することもできます(Spliterators.spliterator(Iterator, long, int)を参照)。 状況によっては、このクラスを拡張するよりもイテレータを使用する方が簡単または好都合な場合があります。たとえば、使用可能なイテレータがすでにある場合などです。

導入されたバージョン:
1.8
関連項目:
  • ネストされたクラスのサマリー

    インタフェースSpliteratorで宣言されたネストされたクラス/インタフェース

    Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,T_CONS,T_SPLITR>
    修飾子と型
    インタフェース
    説明
    static interface 
    double値に特化されたスプリッテレータです。
    static interface 
    int値に特化されたスプリッテレータです。
    static interface 
    long値に特化されたスプリッテレータです。
    static interface 
    プリミティブ値に特化されたスプリッテレータです。
  • フィールドのサマリー

    インタフェースSpliteratorで宣言されたフィールド

    CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED
    修飾子と型
    フィールド
    説明
    static final int
    外部同期を使用せずに、複数のスレッドで並行して要素のソースを安全に変更できる(追加、置換、削除が可能)ことを示す特性値です。
    static final int
    検出された要素の各ペアx, yに対して!x.equals(y)であることを示す特性値です。
    static final int
    要素のソースが構造的に変更不可であることを示す特性値です。つまり、要素の追加、置換および削除ができないため、トラバース中に変更が発生する可能性はありません。
    static final int
    ソースで検出される要素がnullではないことが保証されることを示す特性値です。
    static final int
    要素の検出順序が定義されていることを示す特性値です。
    static final int
    構造的なソース変更がない場合に、トラバースまたは分割の前にestimateSize()から返される値が完全なトラバースで検出される要素数の正確なカウントを表す有限サイズを表すことを示す特性値です。
    static final int
    検出順序が定義済みのソート順序に従うことを示す特性値です。
    static final int
    trySplit()で生成されたすべてのスプリッテレータがSpliterator.SIZEDSpliterator.SUBSIZEDの両方であることを示す特性値です。
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    AbstractSpliterator(long est, int additionalCharacteristics)
    指定された推定サイズおよび追加の特性を報告するスプリッテレータを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    このSpliteratorおよびその要素の特性のセットを返します。
    long
    Spliterator.forEachRemaining(Consumer)トラバーサルによって検出される要素数の見積りを返します。または、計算するには無限、不明または高すぎる場合はLong.MAX_VALUEを返します。
    このspliteratorをパーティション化できる場合に、要素に適用されるSpliteratorを返します。このメソッドから戻ると同時に、それらの要素にはこのSpliteratorが適用されなくなります。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。

    インタフェースSpliteratorで宣言されたメソッド

    forEachRemaining, getComparator, getExactSizeIfKnown, hasCharacteristics, tryAdvance
    修飾子と型
    メソッド
    説明
    default void
    forEachRemaining(Consumer<? super T> action)
    すべての要素の処理が完了するかアクションから例外がスローされるまで、現在のスレッド内で残りの各要素に対して指定されたアクションをシーケンシャルに実行します。
    default Comparator<? super T>
    このスプリッテレータのソースがComparatorによるSpliterator.SORTEDである場合は、そのComparatorを返します。
    default long
    このスプリッテレータがSpliterator.SIZEDである場合はSpliterator.estimateSize()を返し、それ以外の場合は-1を返す簡易メソッドです。
    default boolean
    hasCharacteristics(int characteristics)
    このスプリッテレータのSpliterator.characteristics()に指定された特性がすべて含まれる場合はtrueを返します。
    boolean
    tryAdvance(Consumer<? super T> action)
    残りの要素が存在する場合: 指定されたアクションを実行し、trueを返します。それ以外の場合は、falseを返します。
  • コンストラクタの詳細

    • AbstractSpliterator

      protected AbstractSpliterator(long est, int additionalCharacteristics)
      指定された推定サイズおよび追加の特性を報告するスプリッテレータを作成します。
      パラメータ:
      est - 既知の場合はこのスプリッテレータの推定サイズ。そうでない場合はLong.MAX_VALUE
      additionalCharacteristics - このスプリッテレータのソースまたは要素の特性。 SIZEDを報告する場合、このスプリッテレータはSUBSIZEDも追加で報告します。
  • メソッドの詳細

    • trySplit

      public Spliterator<T> trySplit()
      このspliteratorをパーティション化できる場合に、要素に適用されるSpliteratorを返します。このメソッドから戻ると同時に、それらの要素にはこのSpliteratorが適用されなくなります。

      このスプリッテレータがSpliterator.ORDEREDである場合、返されるスプリッテレータは要素の厳密な接頭辞をカバーする必要があります。

      このスプリッテレータが無限の要素数をカバーする場合を除き、繰り返しtrySplit()を呼び出すと、最終的にはnullが返されるはずです。 null以外が返されたときは次のようになります。

      • 分割前にestimateSize()で報告される値は、分割後のこのスプリッテレータおよび返されたスプリッテレータのestimateSize()と等しいかそれより大きくなければなりません。さらに、
      • このスプリッテレータがSUBSIZEDである場合、分割前のこのスプリッテレータのestimateSize()は、分割後のこのスプリッテレータおよび返されたスプリッテレータのestimateSize()の合計と等しくなければなりません。

      このメソッドはなんらかの理由でnullを返す場合があります(空であるため、トラバース開始後に分割できないため、データ構造の制約のため、効率上の考慮事項のためなど)。 この実装では、制限付きの並列処理が許可されます。

      定義:
      インタフェースSpliterator<T>trySplit
      戻り値:
      要素の一部分に適用されるSpliterator。このスプリッテレータを分割できない場合はnull
    • estimateSize

      public long estimateSize()
      Spliterator.forEachRemaining(Consumer)トラバーサルによって検出される要素数の見積りを返します。または、計算するには無限、不明または高すぎる場合はLong.MAX_VALUEを返します。

      このスプリッテレータがSpliterator.SIZEDであり、まだ部分的にトラバースまたは分割されていない場合、あるいは、このスプリッテレータがSpliterator.SUBSIZEDであり、まだ部分的にトラバースされていない場合、この推定値は完全なトラバースで検出される要素数の正確なカウントでなければなりません。 それ以外の場合、この推定値は任意の不正確な値でかまいませんが、Spliterator.trySplit()の呼出しにわたって、指定されたとおりに減少する必要があります。

      定義:
      インタフェースSpliterator<T>estimateSize
      実装要件:
      この実装は、作成時に報告された推定サイズを返します。また、推定サイズが既知の場合は、分割時にサイズを減らします。
      戻り値:
      推定サイズ。無限大または不明の場合、あるいはコストが高すぎて計算できない場合はLong.MAX_VALUE
    • characteristics

      public int characteristics()
      このSpliteratorおよびその要素の特性のセットを返します。 結果は、Spliterator.ORDEREDSpliterator.DISTINCTSpliterator.SORTEDSpliterator.SIZEDSpliterator.NONNULLSpliterator.IMMUTABLESpliterator.CONCURRENTSpliterator.SUBSIZEDの値の論理和で表されます。 trySplitの呼出しの前または呼出しと呼出しの間に、1つのスプリッテレータに対して繰り返しcharacteristics()を呼び出すと、常に同じ結果が返されるはずです。

      スプリッテレータが一貫性のない特性セット(1つの呼出しから返されたものか、複数の呼出しから返されたもの)を報告する場合、このスプリッテレータを使用した計算については何も保証できません。

      定義:
      インタフェースSpliterator<T>characteristics
      実装要件:
      この実装は、作成時に報告された特性を返します。
      戻り値:
      特性の表現