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

クラスSpliterators.AbstractLongSpliterator

java.lang.Object
java.util.Spliterators.AbstractLongSpliterator
すべての実装されたインタフェース:
Spliterator<Long>, Spliterator.OfLong, Spliterator.OfPrimitive<Long,​LongConsumer,​Spliterator.OfLong>
含まれているクラス:
Spliterators

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

spliteratorを実装するには、拡張クラスはtryAdvanceを実装するだけでよい。 拡張クラスは、よりパフォーマンスの高い実装を提供できる場合は、forEachRemainingをオーバーライドする必要があります。

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

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

導入されたバージョン:
1.8
関連項目:
Spliterators.spliterator(java.util.PrimitiveIterator.OfLong, long, int)
  • コンストラクタの詳細

    • AbstractLongSpliterator

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

    • trySplit

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

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

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

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

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

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

      public long estimateSize()
      Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)トラバーサルで検出される要素の推定数の推定を返します。無限、不明、または負荷が高すぎて計算できない場合は、Long.MAX_VALUEを返します。

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

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

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

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

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