インタフェースLongStream
- すべてのスーパー・インタフェース:
AutoCloseable,BaseStream<Long, LongStream>
Streamに対してlongプリミティブ特殊化を行ったものです。
次の例は、StreamとLongStreamを使って赤色のウィジェットの重さの合計を計算する集計操作を示したものです。
long sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToLong(w -> w.getWeight())
.sum();
ストリー 、ストリー 操作、ストリー ・パイプライン、および並列性の詳しい仕様については、Streamのクラス・ドキュメントやjava.util.streamのパッケージ・ドキュメントを参照してく さい。- 導入されたバージョン:
- 1.8
- 関連 目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型インタフェース説明static interfaceLongStreamの可変ビルダーです。static interfacelong値の引数およびLongConsumerを受け入れ、結果を返さない演算を表します。 -
メソッドのサマリー
修飾子と型メソッド説明booleanallMatch(LongPredicate predicate) このストリー のすべての要 が指定された述語に一致するかどうかを返します。booleananyMatch(LongPredicate predicate) このストリー のいずれかの要 が指定された述語に一致するかどうかを返します。このストリー の要 をdoubleに変換した結果から構成されるDoubleStreamを返します。average()このストリー の要 の算術平均を記述するOptionalDoubleを返します。このストリー が空の 合は空のOptionalを返します。boxed()ストリー の各要 をLongにボクシングした結果から構成されるStreamを返します。static LongStream.Builderbuilder()LongStreamのビルダーを返します。<R> Rcollect(Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R, R> combiner) このストリー の要 に対して可変リダクション操作を実行します。static LongStreamconcat(LongStream a, LongStream b) 最初のストリー の全要 と2番目のストリー の全要 を連結したものを要 に持つ、遅延連結ストリー を作成します。longcount()このストリー の要 の個数を返します。distinct()このストリー の重複を除いた要 から構成されるストリー を返します。default LongStreamdropWhile(LongPredicate predicate) このストリー が 序付けされている 合、指定された述語に一致する要 の最長のプレフィクスを削除した後、このストリー の残りの要 で構成されるストリー を返します。static LongStreamempty()空の 次LongStreamを返します。filter(LongPredicate predicate) このストリー の要 のうち、指定された述語に一致するものから構成されるストリー を返します。findAny()ストリー の一部の要 を記述するOptionalLongを返します。ストリー が空の 合は空のOptionalLongを返します。このストリー の最初の要 を記述するOptionalLongを返します。ストリー が空の 合は空のOptionalLongを返します。flatMap(LongFunction<? extends LongStream> mapper) このストリー の各要 をマップされたストリー (指定されたマッピング関数を各要 に適用することで得られる)の内容で置き換えた結果から成るストリー を返します。voidforEach(LongConsumer action) このストリー の各要 に対してアクションを実行します。voidforEachOrdered(LongConsumer action) このストリー の各要 に対してアクションを実行します。検出 が定義されたストリー では、各要 が検出 に処理されることが保証されます。static LongStream指定されたLongSupplierによって生成される要 を含む、 序付けされていない無限 次ストリー を返します。static LongStreamiterate(long seed, LongPredicate hasNext, LongUnaryOperator next) 指定されたnextファンクションの反復適用によって生成された 次 序付けされたLongStreamを、指定されたhasNext述語を満たす条件付き初期要 に戻します。static LongStreamiterate(long seed, LongUnaryOperator f) 初期要seedに関数fを繰り返し適用することで生成される、 序付けされた無限 次LongStreamを返します(seed、f(seed)、f(f(seed))、といった要 から成るStreamが生成される)。limit(long maxSize) このストリー の要 をmaxSize以内の長さに切り詰めた結果から成るストリー を返します。map(LongUnaryOperator mapper) このストリー の要 に指定された関数を適用した結果から構成されるストリー を返します。default LongStreamこのストリー の各要 を複数の要 (特にゼロ個以上の要 )で置き換えた結果で構成されるストリー を返します。mapToDouble(LongToDoubleFunction mapper) このストリー の要 に指定された関数を適用した結果から構成されるDoubleStreamを返します。mapToInt(LongToIntFunction mapper) このストリー の要 に指定された関数を適用した結果から構成されるIntStreamを返します。<U> Stream<U> mapToObj(LongFunction<? extends U> mapper) 指定された関数をこのストリー の要 に適用した結果から構成される、オブジェクト値のStreamを返します。max()このストリー の最大要 を記述するOptionalLong、またはこのストリー が空の 合は空のOptionalを返します。min()このストリー の最小要 を記述するOptionalLong、またはこのストリー が空の 合は空のOptionalを返します。booleannoneMatch(LongPredicate predicate) 指定された述語に一致する要 がこのストリー 内に存在しないかどうかを返します。static LongStreamof(long t) 単一要 を含む 次LongStreamを返します。static LongStreamof(long... values) 指定された値を要 に持つ、 序付けされた 次ストリー を返します。peek(LongConsumer action) このストリー の要 から成るストリー を返すほか、その結果のストリー から消費される各要 に対し、指定されたアクションを実行します。static LongStreamrange(long startInclusive, long endExclusive) startInclusive(含む)からendExclusive(含まない)の範囲でステップ1でインクリメントした値を含む、 序付けされた 次LongStreamを返します。static LongStreamrangeClosed(long startInclusive, long endInclusive) startInclusive(含む)からendInclusive(含む)の範囲でステップ1でインクリメントした値を含む、 序付けされた 次LongStreamを返します。longreduce(long identity, LongBinaryOperator op) skip(long n) このストリー の最初のn個の要 を 棄した残りの要 で構成されるストリー を返します。sorted()このストリー の要 で構成されるストリー をソートされた 序で返します。longsum()このストリー 内の要 の合計を返します。このストリー の要 に関する各種のサマリー・データを記述するLongSummaryStatisticsを返します。default LongStreamtakeWhile(LongPredicate predicate) このストリー が 序付けされている 合、指定された述語に一致する、このストリー から取得された要 の最長のプレフィクスで構成されるストリー を返します。long[]toArray()このストリー の要 を含む配列を返します。インタフェースjava.util.stream.BaseStreamで宣言されたメソッド
close, isParallel, iterator, onClose, parallel, sequential, spliterator, unordered
-
メソッドの詳細
-
filter
LongStream filter(LongPredicate predicate) このストリー の要 のうち、指定された述語に一致するものから構成されるストリー を返します。これは中間操作です。
-
map
LongStream map(LongUnaryOperator mapper) このストリー の要 に指定された関数を適用した結果から構成されるストリー を返します。これは中間操作です。
-
mapToObj
<U> Stream<U> mapToObj(LongFunction<? extends U> mapper) 指定された関数をこのストリー の要 に適用した結果から構成される、オブジェクト値のStreamを返します。これは中間操作です。
-
mapToInt
IntStream mapToInt(LongToIntFunction mapper) このストリー の要 に指定された関数を適用した結果から構成されるIntStreamを返します。これは中間操作です。
-
mapToDouble
DoubleStream mapToDouble(LongToDoubleFunction mapper) このストリー の要 に指定された関数を適用した結果から構成されるDoubleStreamを返します。これは中間操作です。
-
flatMap
LongStream flatMap(LongFunction<? extends LongStream> mapper) -
mapMulti
default LongStream mapMulti(LongStream.LongMapMultiConsumer mapper) このストリー の各要 を複数の要 (特にゼロ個以上の要 )で置き換えた結果で構成されるストリー を返します。 置換を実行するには、置換要 を受け入れるconsumer引数とともに、指定されたマッピング関数を各要 に適用します。 マッピング関数は、コンシューマをゼロ回以上コールして置換要 を提供します。これは中間操作です。
consumer引数がマッピング関数に対するアプリケーションのスコープ外で使用されている 合、結果は未定義です。
- 実装要件:
- デフォルト実装は、このストリー で
flatMapを呼び出し、次のように動作する関数を渡します。 最初に、新しく作成された内部バッファに置換要 を蓄積するLongConsumerを使用してマッパー関数をコールします。 マッパー関数が戻ると、内部バッファからLongStreamが作成されます。 最後に、このストリー をflatMapに返します。 - パラメータ:
mapper- 置換要 を生成するnon-interfering、statelessファンクション- 戻り値:
- 新しいストリー
- 導入されたバージョン:
- 16
- 関連 目:
-
distinct
-
sorted
-
peek
LongStream peek(LongConsumer action) このストリー の要 から成るストリー を返すほか、その結果のストリー から消費される各要 に対し、指定されたアクションを実行します。これは中間操作です。
並列ストリー ・パイプラインの 合、上流の操作によって用意された各要 に対し、任意のタイミングで任意のスレッド内でアクションが呼び出される可能性があります。 アクションが共有状態を変更する 合、必要な同期を提供する責任はアクションにあります。
- APIのノート:
- このメソッドの主な存在理由は、要 がパイプライン内の特定のポイントを通過する際にその内容を確認するようなデバッグをサポートすることにあります。
LongStream.of(1, 2, 3, 4) .filter(e -> e > 2) .peek(e -> System.out.println("Filtered value: " + e)) .map(e -> e * e) .peek(e -> System.out.println("Mapped value: " + e)) .sum();ストリー 実装で、一部またはすべての要 (
findFirstのような短絡操作やcount()に記載されている例)の生成を最適化できる 合、それらの要 に対してアクションは呼び出されません。 - パラメータ:
action- ストリー から消費される要 に対して実行すべき非干渉アクション- 戻り値:
- 新しいストリー
-
limit
LongStream limit(long maxSize) このストリー の要 をmaxSize以内の長さに切り詰めた結果から成るストリー を返します。これは、ステートフルな短絡中間操作です。
- APIのノート:
limit()は、 次ストリー ・パイプラインでは一般に低コストの操作ですが、 序付けされた並列パイプラインではコストが非常に高くなる可能性があります(特にmaxSizeの値が大きい 合)。任意のn個の要 を返す けでなく、検出 での最初のn個の要 を返さなければいけない、という制約がlimit(n)に課されるからです。 状況のセマンティックスが許せば、 序付けされていないストリー ・ソース(generate(LongSupplier)など)を使用するか、BaseStream.unordered()で 序付けの制約をなくせば、並列パイプラインのlimit()が大幅に高速化される可能性があります。 検出 序との整合性が必要で、かつ並列パイプラインでのlimit()のパフォーマンスやメモリー使用量に問題がある 合には、BaseStream.sequential()で 次実行に切り替えるとパフォーマンスが改善される可能性があります。- パラメータ:
maxSize- ストリー の要 数の上限- 戻り値:
- 新しいストリー
- スロー:
IllegalArgumentException-maxSizeが の 合
-
skip
LongStream skip(long n) このストリー の最初のn個の要 を 棄した残りの要 で構成されるストリー を返します。 このストリー に含まれる要 の数がn個より少ない 合は、空のストリー が返されます。これはステートフルな中間操作です。
- APIのノート:
skip()は、 次ストリー ・パイプラインでは一般に低コストの操作ですが、 序付けされた並列パイプラインではコストが非常に高くなる可能性があります(特にnの値が大きい 合)。任意のn個の要 をスキップする けでなく、検出 での最初のn個の要 をスキップしなければいけない、という制約がskip(n)に課されるからです。 状況のセマンティックスが許せば、 序付けされていないストリー ・ソース(generate(LongSupplier)など)を使用するか、BaseStream.unordered()で 序付けの制約をなくせば、並列パイプラインのskip()が大幅に高速化される可能性があります。 検出 序との整合性が必要で、かつ並列パイプラインでのskip()のパフォーマンスやメモリー使用量に問題がある 合には、BaseStream.sequential()で 次実行に切り替えるとパフォーマンスが改善される可能性があります。- パラメータ:
n- スキップする先 要 の数- 戻り値:
- 新しいストリー
- スロー:
IllegalArgumentException-nが の 合
-
takeWhile
default LongStream takeWhile(LongPredicate predicate) このストリー が 序付けされている 合、指定された述語に一致する、このストリー から取得された要 の最長のプレフィクスで構成されるストリー を返します。 それ以外の 合は、このストリー が 序付けられていない 合、指定された述語に一致する、このストリー から取得された要 のサブセットで構成されるストリー が返されます。このストリー が 序付けされている 合、最長のプレフィクスは、指定された述語に一致するこのストリー の要 の連続したシーケンスです。 序の最初の要 は、このストリー の最初の要 であり、 序の最後の要 の直後の要 は、指定された述語と一致しません。
このストリー が 序付けされておらず、このストリー の一部の(すべてではない)要 が指定された述語と一致する 合、この操作の動作は非決定的であり、一致する要 (空のセットを含む)のサブセットを自由に取得できます。
このストリー のすべての要 が指定された述語に一致する 合、このストリー が 序付けられているかどうかにかかわらず、この操作ではすべての要 (結果は入力と同じです)が使用され、ストリー の要 が指定された述語に一致しない 合は(結果は空のストリー です)は使用されません。
これは、ステートフルな短絡中間操作です。
- APIのノート:
takeWhile()は、通常、 次ストリー ・パイプラインに対する安価な操作ですが、 序付けられたパラレル・パイプラインでは非常にコストがかかります。これは、操作が、有効なプレフィクスのみでなく、検出 序における要 の最長のプレフィクスを返すように制約されるためです。 状況のセマンティクスで許可されている 合、 序付けされていないストリー ・ソース(generate(LongSupplier)など)を使用するか、BaseStream.unordered()で 序付け制約を削除すると、パラレル・パイプラインでtakeWhile()が大幅に高速化される可能性があります。 出現 序の一貫性が必要で、パラレル・パイプラインでtakeWhile()を使用したパフォーマンスまたはメモリー使用率が低下している 合、BaseStream.sequential()を使用して 次実行に切り替えると、パフォーマンスが向上する可能性があります。- 実装要件:
- デフォルトの実装では、このストリー の
spliteratorを取得し、そのスプリッタをラップしてトラバーサルに対するこの操作のセマンティクスをサポートし、ラップされたスプリッタに関連付けられた新しいストリー を返します。 戻されたストリー は、このストリー (BaseStream.isParallel()による並列実行または 次実行)の実行特性を保持しますが、ラップされたスプリッタは分割をサポートしないことを選択できます。 返されたストリー が閉じられると、返されたストリー とこのストリー の両方のクローズ・ハンドラが起動されます。 - パラメータ:
predicate- 要 の最長のプレフィクスを決定するために要 に適用するnon-interfering、stateless述語。- 戻り値:
- 新しいストリー
- 導入されたバージョン:
- 9
-
dropWhile
default LongStream dropWhile(LongPredicate predicate) このストリー が 序付けされている 合、指定された述語に一致する要 の最長のプレフィクスを削除した後、このストリー の残りの要 で構成されるストリー を返します。 それ以外の 合は、このストリー が 序付けられていない 合、指定された述語に一致する要 のサブセットを削除した後に、このストリー の残りの要 で構成されるストリー が返されます。このストリー が 序付けされている 合、最長のプレフィクスは、指定された述語に一致するこのストリー の要 の連続したシーケンスです。 序の最初の要 は、このストリー の最初の要 であり、 序の最後の要 の直後の要 は、指定された述語と一致しません。
このストリー が 序付けされておらず、このストリー の一部の(すべてではない)要 が指定された述語と一致する 合、この操作の動作は非決定的であり、一致する要 (空のセットを含む)のサブセットを自由に削除できます。
このストリー のすべての要 が指定された述語と一致する 合、このストリー が 序付けされているかどうかに関係なく、この操作ではすべての要 (結果は空のストリー です)が削除されるか、またはストリー の要 が指定された述語に一致しない 合、要 は削除されません(結果は入力と同じです)。
これはステートフルな中間操作です。
- APIのノート:
dropWhile()は、通常、 次ストリー ・パイプラインに対する安価な操作ですが、 序付けられたパラレル・パイプラインでは非常にコストがかかります。これは、操作が、有効なプレフィクスのみでなく、検出 序における要 の最長のプレフィクスを返すように制約されるためです。 状況のセマンティクスで許可されている 合、 序付けされていないストリー ・ソース(generate(LongSupplier)など)を使用するか、BaseStream.unordered()で 序付け制約を削除すると、パラレル・パイプラインでdropWhile()が大幅に高速化される可能性があります。 出現 序の一貫性が必要で、パラレル・パイプラインでdropWhile()を使用したパフォーマンスまたはメモリー使用率が低下している 合、BaseStream.sequential()を使用して 次実行に切り替えると、パフォーマンスが向上する可能性があります。- 実装要件:
- デフォルトの実装では、このストリー の
spliteratorを取得し、そのスプリッタをラップしてトラバーサルに対するこの操作のセマンティクスをサポートし、ラップされたスプリッタに関連付けられた新しいストリー を返します。 戻されたストリー は、このストリー (BaseStream.isParallel()による並列実行または 次実行)の実行特性を保持しますが、ラップされたスプリッタは分割をサポートしないことを選択できます。 返されたストリー が閉じられると、返されたストリー とこのストリー の両方のクローズ・ハンドラが起動されます。 - パラメータ:
predicate- 要 の最長のプレフィクスを決定するために要 に適用するnon-interfering、stateless述語。- 戻り値:
- 新しいストリー
- 導入されたバージョン:
- 9
-
forEach
void forEach(LongConsumer action) このストリー の各要 に対してアクションを実行します。これは終端操作です。
並列ストリー ・パイプラインの 合、この操作は、ストリー の検出 序を考慮することを保証しません。保証すると並列性のメリットが 牲になるからです。 与えられた任意の要 に対し、ライブラリが選択した任意のタイミングで任意のスレッド内でアクションが実行される可能性があります。 アクションが共有状態にアクセスする 合、必要な同期を提供する責任はアクションにあります。
- パラメータ:
action- 要 に対して実行する非干渉アクション
-
forEachOrdered
void forEachOrdered(LongConsumer action) このストリー の各要 に対してアクションを実行します。検出 が定義されたストリー では、各要 が検出 に処理されることが保証されます。これは終端操作です。
- パラメータ:
action- 要 に対して実行する非干渉アクション- 関連 目:
-
toArray
-
reduce
long reduce(long identity, LongBinaryOperator op) 指定された単位元の値と結合的な累積関数を使ってこのストリー の要 に対してリダクションを実行し、リデュースされた値を返します。 これは、次の操作に相当します。
た し、 次実行の制約が課されるわけではありません。long result = identity; for (long element : this stream) result = accumulator.applyAsLong(result, element) return result;identity値はアキュ レータ関数の単位元でなければいけません。 つまり、すべてのxについて、accumulator.apply(identity, x)がxに等しくなります。アキュ レータ関数は結合的な関数でなければいけません。これは終端操作です。
- APIのノート:
- 合計、最小、最大、平均はすべて、リダクションの特殊な 合です。 数値ストリー の合計は次のように表現できます。
あるいは、次のようによりコンパクトにします。long sum = integers.reduce(0, (a, b) -> a+b);long sum = integers.reduce(0, Long::sum);これは、単純にループで中間合計を更新していく方法に比べて 回りな集計方法に見えるかもしれませんが、リダクション操作の並列化が容易に行え、並列化の際に同期を追 する必要がなく、データ競合のリスクも大幅に減少します。
- パラメータ:
identity- 蓄積関数に対する単位元の値op- 2つの値を結合するための結合的、非干渉およびステートレスな関数- 戻り値:
- リダクションの結果
- 関連 目:
-
reduce
OptionalLong reduce(LongBinaryOperator op) 結合的累積関数を使用して、このストリー の要 に対してリダクションを実行し、リダクションされた値を記述するOptionalLongを返します(ある 合)。 これは、次の操作に相当します。
た し、 次実行の制約が課されるわけではありません。boolean foundAny = false; long result = null; for (long element : this stream) { if (!foundAny) { foundAny = true; result = element; } else result = accumulator.applyAsLong(result, element); } return foundAny ? OptionalLong.of(result) : OptionalLong.empty();アキュ レータ関数は結合的な関数でなければいけません。これは終端操作です。
-
collect
<R> R collect(Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R, R> combiner) このストリー の要 に対して可変リダクション操作を実行します。 可変リダクションとは、リデュース対象の値がArrayListのような可変の結果コンテナであり、結果を置き換えるかわりに結果の状態を更新することによって要 が組み込まれるようなリダクションのことです。 これは次と同等の結果を生成します。R result = supplier.get(); for (long element : this stream) accumulator.accept(result, element); return result;collect操作はreduce(long, LongBinaryOperator)と同様、同期を追 しなくても並列化できます。これは終端操作です。
- 型パラメータ:
R- 可変結果コンテナの型- パラメータ:
supplier- 新しい可変結果コンテナを作成する関数。 並列実行の 合、この関数は複数回呼び出される可能性がありますが、そのたびに新しい値を返す必要があります。accumulator- 結果コンテナに要 を折りたたむ必要があるassociative、non-interfering、statelessファンクション。combiner- 2つの部分的な結果コンテナを受け入れ、それらをマージするassociative、non-interfering、stateless関数。これは、累計関数と互換性がある必要があります。 コンバイナ関数は、2番目の結果コンテナから1番目の結果コンテナに要 を折りたたむ必要があります。- 戻り値:
- リダクションの結果
- 関連 目:
-
sum
-
min
OptionalLong min()このストリー の最小要 を記述するOptionalLong、またはこのストリー が空の 合は空のOptionalを返します。 これはリダクションの特殊な 合であり、次と同等になります。return reduce(Long::min);これは終端操作です。
- 戻り値:
- このストリー の最小要 を含む
OptionalLongまたは空のOptionalLong(ストリー が空の 合)
-
max
OptionalLong max()このストリー の最大要 を記述するOptionalLong、またはこのストリー が空の 合は空のOptionalを返します。 これはリダクションの特殊な 合であり、次と同等になります。return reduce(Long::max);これは終端操作です。
- 戻り値:
- このストリー の最大要 を含む
OptionalLongまたは空のOptionalLong(ストリー が空の 合)
-
count
long count()- APIのノート:
- 実装では、ストリー ・ソースから直接カウントを計算できる 合、ストリー ・パイプライン(連続的または並列的に)を実行しないことを選択できます。 そのような 合、ソース要 はトラバースされず、中間操作は評価されません。 デバッグなどの無害なケースを除き、副作用のある行動パラメータが強く推奨されない 合があります。 たとえば、次のストリー について考えてみます:
ストリー ・ソースでカバーされる要 の数がわかっており、中間操作であるLongStream s = LongStream.of(1, 2, 3, 4); long count = s.peek(System.out::println).count();peekは、ストリー (flatMapまたはfilter操作の 合のように)に要 を注入または削除しません。 したがって、カウントは4で、パイプラインを実行する必要はなく、副作用として要 を出力します。 - 戻り値:
- このストリー の要 の個数
-
average
OptionalDouble average()- 戻り値:
- このストリー の平均要 を含む
OptionalDoubleまたは空のオプション(ストリー が空の 合)
-
summaryStatistics
LongSummaryStatistics summaryStatistics()- 戻り値:
- このストリー の要 に関する各種のサマリー・データを記述する
LongSummaryStatistics
-
anyMatch
boolean anyMatch(LongPredicate predicate) このストリー のいずれかの要 が指定された述語に一致するかどうかを返します。 すべての要 で述語を評価するとは限りません(結果を決定するのに必要でない 合)。 ストリー が空の 合、falseが返され、述語は評価されません。これは短絡終端操作です。
-
allMatch
boolean allMatch(LongPredicate predicate) このストリー のすべての要 が指定された述語に一致するかどうかを返します。 すべての要 で述語を評価するとは限りません(結果を決定するのに必要でない 合)。 ストリー が空の 合、trueが返され、述語は評価されません。これは短絡終端操作です。
-
noneMatch
boolean noneMatch(LongPredicate predicate) 指定された述語に一致する要 がこのストリー 内に存在しないかどうかを返します。 すべての要 で述語を評価するとは限りません(結果を決定するのに必要でない 合)。 ストリー が空の 合、trueが返され、述語は評価されません。これは短絡終端操作です。
-
findFirst
OptionalLong findFirst()このストリー の最初の要 を記述するOptionalLongを返します。ストリー が空の 合は空のOptionalLongを返します。 ストリー が検出 序を持たない 合は、任意の要 が返されます。これは短絡終端操作です。
- 戻り値:
- このストリー の最初の要 を記述する
OptionalLongまたは空のOptionalLong(ストリー が空の 合)
-
findAny
OptionalLong findAny()ストリー の一部の要 を記述するOptionalLongを返します。ストリー が空の 合は空のOptionalLongを返します。これは短絡終端操作です。
この操作の動作は明らかに非決定論的です。ストリー の任意の要 を自由に選択できます。 これは、並列処理でのパフォーマンスを最大化できるようにするためです。デメリットは、同じソースに対して呼び出すたびに、違う結果が返される可能性がある点です。 (安定した結果が必要な 合は、かわりに
findFirst()を使用してく さい。)- 戻り値:
- このストリー のある要 を記述する
OptionalLongまたは空のOptionalLong(ストリー が空の 合) - 関連 目:
-
asDoubleStream
DoubleStream asDoubleStream()このストリー の要 をdoubleに変換した結果から構成されるDoubleStreamを返します。これは中間操作です。
- 戻り値:
- このストリー の要 を
doubleに変換した結果から構成されるDoubleStream
-
boxed
-
builder
-
empty
-
of
-
of
static LongStream of(long... values) 指定された値を要 に持つ、 序付けされた 次ストリー を返します。- パラメータ:
values- 新しいストリー の要- 戻り値:
- 新しいストリー
-
iterate
static LongStream iterate(long seed, LongUnaryOperator f) 初期要seedに関数fを繰り返し適用することで生成される、 序付けされた無限 次LongStreamを返します(seed、f(seed)、f(f(seed))、といった要 から成るStreamが生成される)。LongStreamの最初の要 (位置0)は、指定されたseedになります。n > 0の 合、位置nの要 は、位置n - 1の要 に関数fを適用した結果になります。1つの要 happens-beforeに
fを適用するアクション(後続の要 にfを適用するアクション)。 どの要 に対しても、ライブラリが選択するどのスレッドでもアクションを実行できます。- パラメータ:
seed- 初期要f- 新しい要 を生成するために前の要 に適用される関数- 戻り値:
- 新しい 次
LongStream
-
iterate
static LongStream iterate(long seed, LongPredicate hasNext, LongUnaryOperator next) 指定されたnextファンクションの反復適用によって生成された 次 序付けされたLongStreamを、指定されたhasNext述語を満たす条件付き初期要 に戻します。 ストリー は、hasNext述語がfalseを返すとすぐに終了します。LongStream.iterateは、対応するforループによって生成されるものと同じシーケンスを生成する必要があります:for (long index=seed; hasNext.test(index); index = next.applyAsLong(index)) { ... }hasNext述語がシード値を保持しない 合、結果のシーケンスは空になることがあります。 それ以外の 合、最初の要 が指定のseed値になり、次の要 (存在する 合)は、next関数をseed値に適用した結果になります。また、hasNext述語がストリー を終了する必要があることを示すまで反復的に行われます。hasNext述語を要 happens-beforeに適用するアクション(その要 にnext関数を適用するアクション)。 1つの要 happens-beforeにnext関数を適用するアクション(後続の要 にhasNext述語を適用するアクション)。 どの要 に対しても、ライブラリが選択するどのスレッドでもアクションを実行できます。- パラメータ:
seed- 初期要hasNext- ストリー を終了する必要があるタイミングを決定するために要 に適用する述語。next- 新しい要 を生成するために前の要 に適用される関数- 戻り値:
- 新しい 次
LongStream - 導入されたバージョン:
- 9
-
generate
static LongStream generate(LongSupplier s) 指定されたLongSupplierによって生成される要 を含む、 序付けされていない無限 次ストリー を返します。 これは、定数ストリー やランダ な要 から成るストリー などを生成するのに適しています。- パラメータ:
s- 要 を生成するためのLongSupplier- 戻り値:
- 序付けされていない新しい無限 次
LongStream
-
range
static LongStream range(long startInclusive, long endExclusive) startInclusive(含む)からendExclusive(含まない)の範囲でステップ1でインクリメントした値を含む、 序付けされた 次LongStreamを返します。- APIのノート:
同等の増 する値のシーケンスは、次のような
forループを使って 次的に生成できます。for (long i = startInclusive; i < endExclusive ; i++) { ... }- パラメータ:
startInclusive- 初期値(この値を含む)endExclusive- 上限(この値を含まない)- 戻り値:
long要 の範囲に対する 次LongStream
-
rangeClosed
static LongStream rangeClosed(long startInclusive, long endInclusive) startInclusive(含む)からendInclusive(含む)の範囲でステップ1でインクリメントした値を含む、 序付けされた 次LongStreamを返します。- APIのノート:
同等の増 する値のシーケンスは、次のような
forループを使って 次的に生成できます。for (long i = startInclusive; i <= endInclusive ; i++) { ... }- パラメータ:
startInclusive- 初期値(この値を含む)endInclusive- 上限(この値を含む)- 戻り値:
long要 の範囲に対する 次LongStream
-
concat
static LongStream concat(LongStream a, LongStream b) 最初のストリー の全要 と2番目のストリー の全要 を連結したものを要 に持つ、遅延連結ストリー を作成します。 結果のストリー が 序付けされるのは、入力ストリー がどちらも 序付けされている 合であり、並列的になるのは、入力ストリー のどちらかが並列的な 合です。 結果のストリー のクローズ時には、両方の入力ストリー のクローズ・ハンドラが呼び出されます。このメソッドは2つの入力ストリー で動作し、各ストリー をそのソースにバインドします。 その結果、入力ストリー ・ソースへのその後の変更は、連結ストリー 結果に反 されないことがあります。
- APIのノート:
- 最適化の機会を保持するために、このメソッドは各ストリー をそのソースにバインドし、パラメータとして2つのストリー のみを受け入れます。 例えば、各入力ストリー ・ソースの正確なサイズが分かっている 合、連結ストリー ・ソースの正確なサイズを計算することができます。 バインディングなしでストリー を連結する 合、またはこのメソッドへのネストされた呼び出しを行わない 合は、ストリー のストリー を作成し、アイデンティティ関数を使用してフラット・マッピングしてみてく さい:
LongStream concat = Stream.of(s1, s2, s3, s4).flatMapToLong(s -> s); - 実装上のノート:
- 連結を繰り返すことでストリー を構築する際には注意が必要です。 深く連結されたストリー の要 にアクセスすると、ディープ・コール・チェーンまたは
StackOverflowErrorが発生する可能性があります。 - パラメータ:
a- 最初のストリーb- 2番目のストリー- 戻り値:
- 2つの入力ストリー を連結したもの
-