public abstract static class Spliterators.AbstractSpliterator<T> extends Object implements Spliterator<T>
trySplitを実装する抽象Spliteratorです。
拡張するクラスで実装する必要があるのは、tryAdvanceだけです。 拡張するクラスでは、より高パフォーマンスな実装を提供できる場合にはforEachをオーバーライドするようにしてください。
制限付きの並列処理を許可するもう1つの方法として、このクラスを使用するかわりに、イテレータからスプリッテレータを作成することもできます(Spliterators.spliterator(Iterator, long, int)を参照)。 状況によっては、このクラスを拡張するよりもイテレータを使用する方が簡単または好都合な場合があります。たとえば、使用可能なイテレータがすでにある場合などです。
Spliterators.spliterator(Iterator, long, int)Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,T_CONS,T_SPLITR extends Spliterator.OfPrimitive<T,T_CONS,T_SPLITR>>CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED| 修飾子 | コンストラクタ | 説明 |
|---|---|---|
protected |
AbstractSpliterator(long est, int additionalCharacteristics) |
指定された推定サイズおよび追加の特性を報告するスプリッテレータを作成します。
|
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
int |
characteristics() |
このスプリッテレータおよびその要素の、一連の特性を返します。
|
long |
estimateSize() |
Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)のトラバースで検出される要素数の推定値を返します。無限大または不明の場合、あるいはコストが高すぎて計算できない場合は、Long.MAX_VALUEを返します。 |
Spliterator<T> |
trySplit() |
このspliteratorをパーティション化できる場合に、要素に適用されるSpliteratorを返します。このメソッドから戻ると同時に、それらの要素にはこのSpliteratorが適用されなくなります。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitforEachRemaining, getComparator, getExactSizeIfKnown, hasCharacteristics, tryAdvanceprotected AbstractSpliterator(long est,
int additionalCharacteristics)
est - 既知の場合はこのスプリッテレータの推定サイズ。そうでない場合はLong.MAX_VALUE。additionalCharacteristics - このスプリッテレータのソースまたは要素の特性。 SIZEDを報告する場合、このスプリッテレータはSUBSIZEDも追加で報告します。 public Spliterator<T> trySplit()
このスプリッテレータがSpliterator.ORDEREDである場合、返されるスプリッテレータは要素の厳密な接頭辞をカバーする必要があります。
このスプリッテレータが無限の要素数をカバーする場合を除き、繰り返しtrySplit()を呼び出すと、最終的にはnullが返されるはずです。 null以外が返されたときは次のようになります。
estimateSize()で報告される値は、分割後のこのスプリッテレータおよび返されたスプリッテレータのestimateSize()と等しいかそれより大きくなければなりません。さらに、SUBSIZEDである場合、分割前のこのスプリッテレータのestimateSize()は、分割後のこのスプリッテレータおよび返されたスプリッテレータのestimateSize()の合計と等しくなければなりません。このメソッドはなんらかの理由でnullを返す場合があります(空であるため、トラバース開始後に分割できないため、データ構造の制約のため、効率上の考慮事項のためなど)。 この実装では、制限付きの並列処理が許可されます。
Spliterator<T>のtrySplitSpliterator。このスプリッテレータを分割できない場合はnullpublic long estimateSize()
Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)のトラバースで検出される要素数の推定値を返します。無限大または不明の場合、あるいはコストが高すぎて計算できない場合は、Long.MAX_VALUEを返します。
このスプリッテレータがSpliterator.SIZEDであり、まだ部分的にトラバースまたは分割されていない場合、あるいは、このスプリッテレータがSpliterator.SUBSIZEDであり、まだ部分的にトラバースされていない場合、この推定値は完全なトラバースで検出される要素数の正確なカウントでなければなりません。 それ以外の場合、この推定値は任意の不正確な値でかまいませんが、Spliterator.trySplit()の呼出しにわたって、指定されたとおりに減少する必要があります。
Spliterator<T>のestimateSizeLong.MAX_VALUE。public int characteristics()
Spliterator.ORDERED、Spliterator.DISTINCT、Spliterator.SORTED、Spliterator.SIZED、Spliterator.NONNULL、Spliterator.IMMUTABLE、Spliterator.CONCURRENT、Spliterator.SUBSIZEDの値の論理和で表されます。 trySplitの呼出しの前または呼出しと呼出しの間に、1つのスプリッテレータに対して繰り返しcharacteristics()を呼び出すと、常に同じ結果が返されるはずです。
スプリッテレータが一貫性のない特性セット(1つの呼出しから返されたものか、複数の呼出しから返されたもの)を報告する場合、このスプリッテレータを使用した計算については何も保証できません。
Spliterator<T>のcharacteristics バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。