public interface LongStream extends BaseStream<Long,LongStream>
longに特化したStreamである。 次の例はStreamとLongStreamを使った集計処理を示し、赤いウィジェットの重さの和を計算する
long sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToLong(w -> w.getWeight())
.sum();
更なるストリームの仕様・処理・ストリームパイプライン・並列性についてはStreamのクラスドキュメントとjava.util.streamのパッケージドキュメントを参照せよ。
| 修飾子とタイプ | インタフェースと説明 |
|---|---|
static interface |
LongStream.Builder
LongStreamの可変なビルダ StreamBuilderはライフサイクルを持ち、要素を追加できる構築中段階から始まり、要素を追加できなくなる構築済段階に移行する。 |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
boolean |
allMatch(LongPredicate predicate)
このストリームの全ての要素が与えられた述語に適合するか返す。
|
boolean |
anyMatch(LongPredicate predicate)
このストリームのある要素が与えられた述語に適合するか返す。
|
DoubleStream |
asDoubleStream()
このストリームの要素を
doubleに変換した要素からなるDoubleStreamを返す。 |
OptionalDouble |
average()
|
Stream<Long> |
boxed()
このストリームの要素を
Longにボックス化した要素からなるStreamを返す。 |
static LongStream.Builder |
builder()
LongStreamのビルダを返す。 |
<R> R |
collect(Supplier<R> supplier,
ObjLongConsumer<R> accumulator,
BiConsumer<R,R> combiner)
このストリームの要素に可変的簡約を実行する。
|
static LongStream |
concat(LongStream a,
LongStream b)
ストリームの要素が、最初のストリームの全ての要素の後に2つ目のストリームの全ての要素を並べたような、遅延的に連結されたストリームを返す。
|
long |
count()
このストリームの要素数を返す。
|
LongStream |
distinct()
このストリームの要素のうち重複を除いた要素からなるストリームを返す。
|
static LongStream |
empty()
空の逐次的
LongStreamを返す。 |
LongStream |
filter(LongPredicate predicate)
このストリームの要素のうち、与えられた述語に適合する要素からなるストリームを返す。
|
OptionalLong |
findAny()
このストリームのある要素を表す
OptionalLong、もしくはストリームが空であれば空のOptionalLongを返す。 |
OptionalLong |
findFirst()
このストリームの最初の要素を表す
OptionalLong、もしくはストリームが空であれば空のOptionalLongを返す。 |
LongStream |
flatMap(LongFunction<? extends LongStream> mapper)
与えられた写像関数をこのストリームの各要素に適用して生成したストリームの内容で各要素を置き換えた結果からなるストリームを返す。
|
void |
forEach(LongConsumer action)
このストリームの各要素にアクションを適用する。
|
void |
forEachOrdered(LongConsumer action)
このストリームの各要素にアクションを適用する。
|
static LongStream |
generate(LongSupplier s)
各要素が
LongSupplierによって生成される、逐次的な無限ストリームを返す。 |
static LongStream |
iterate(long seed,
LongUnaryOperator f)
初期要素
seedに対する関数fの繰り返しの適用によって生成された無限LongStreamを返す。 |
PrimitiveIterator.OfLong |
iterator()
このストリームの要素のイテレータを返す。
|
LongStream |
limit(long maxSize)
このストリームの要素からなり、長さが
maxSizeより長くならないように切り詰められたストリームを返す。 |
LongStream |
map(LongUnaryOperator mapper)
このストリームの要素に与えられた関数を適用した結果からなるストリームを返す。
|
DoubleStream |
mapToDouble(LongToDoubleFunction mapper)
このストリームの要素に与えられた関数を適用した結果からなる
DoubleStreamを返す。 |
IntStream |
mapToInt(LongToIntFunction mapper)
このストリームの要素に与えられた関数を適用した結果からなる
IntStreamを返す。 |
<U> Stream<U> |
mapToObj(LongFunction<? extends U> mapper)
このストリームの要素に与えられた関数を適用した結果からなる、オブジェクトを値として持つ
Streamを返す。 |
OptionalLong |
max()
|
OptionalLong |
min()
|
boolean |
noneMatch(LongPredicate predicate)
このストリームのどの要素も与えられた述語に適合しないか返す。
|
static LongStream |
of(long... values)
要素が指定された値であるような逐次的なストリームを返す。
|
static LongStream |
of(long t)
1つの要素を含む逐次的な
LongStreamを返す。 |
LongStream |
parallel()
並列であり同等なストリームを返す。
|
LongStream |
peek(LongConsumer action)
このストリームの要素からなり、加えて結果のストリームから要素が消費されるごとにその要素にアクションを実行するストリームを返す。
|
static LongStream |
range(long startInclusive,
long endExclusive)
startInclusive(この値を含む)からendExclusive(この値を含まない)まで、1ずつ増加する順序を持つ逐次的なLongStreamを返す。 |
static LongStream |
rangeClosed(long startInclusive,
long endInclusive)
startInclusive(この値を含む)からendInclusive(この値を含む)まで、1ずつ増加する順序を持つ逐次的なLongStreamを返す。 |
OptionalLong |
reduce(LongBinaryOperator op)
|
long |
reduce(long identity,
LongBinaryOperator op)
|
LongStream |
sequential()
逐次的であり同等なストリームを返す。
|
LongStream |
skip(long n)
このストリームの
n個の要素を取り除いた残りの要素からなるストリームを返す。 |
LongStream |
sorted()
このストリームの要素を、整列した結果からなるストリームを返す。
|
Spliterator.OfLong |
spliterator()
このストリームの要素のスプリッテレータを返す。
|
long |
sum()
このストリームの要素の和を返す。
|
LongSummaryStatistics |
summaryStatistics()
このストリームの要素の各種概要情報を表す
LongSummaryStatisticsを返す。 |
long[] |
toArray()
このストリームの要素からなる配列を返す。
|
close, isParallel, onClose, unorderedLongStream filter(LongPredicate predicate)
これは中間処理である。
LongStream map(LongUnaryOperator mapper)
これは中間処理である。
<U> Stream<U> mapToObj(LongFunction<? extends U> mapper)
Streamを返す。 これは中間処理である。
IntStream mapToInt(LongToIntFunction mapper)
IntStreamを返す。 これは中間処理である。
DoubleStream mapToDouble(LongToDoubleFunction mapper)
DoubleStreamを返す。 これは中間処理である。
LongStream flatMap(LongFunction<? extends LongStream> mapper)
LongStream distinct()
これは状態を持つ中間処理である。
LongStream sorted()
これは状態を持つ中間処理である。
LongStream peek(LongConsumer action)
これは中間処理である。
並列ストリームパイプラインの場合、アクションは上流の処理から利用可能になった際に任意の時間と任意のスレッドで呼ばれる。もしアクションが共有状態を変更した場合、必要な同期を用意する必要がある。
LongStream limit(long maxSize)
maxSizeより長くならないように切り詰められたストリームを返す。 これは短絡的で状態を持つ中間処理である。
LongStream skip(long n)
void forEach(LongConsumer action)
これは末端処理である。
並列ストリームパイプラインの場合、この処理はストリームの出現順順序を尊重するとは限らない。そのようにしてしまうと並列処理の利点を犠牲にしてしまうためである。与えられた要素に対して、アクションはライブラリが選んだ任意の時間と任意のスレッドで実行される。もしアクションが共有状態を変更するならば、アクションは必要な同期処理を用意する責任を負う。
void forEachOrdered(LongConsumer action)
これは末端処理である。
long[] toArray()
これは末端処理である。
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と等しい。accumulator関数は結合的関数である必要がある。
これは末端処理である。
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();
ただし逐次的に実行されるとは制約されていない。 accumulator関数は結合的関数である必要がある。
これは末端処理である。
<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;
reduce(long, LongBinaryOperator)のように、collect処理は追加の同期処理を必要とせずに並列化できる。
これは末端処理である。
long sum()
OptionalLong min()
OptionalLong max()
long count()
OptionalDouble average()
LongSummaryStatistics summaryStatistics()
boolean anyMatch(LongPredicate predicate)
falseを返す。 これは短絡的で状態を持つ末端処理である。
boolean allMatch(LongPredicate predicate)
trueを返す。 これは短絡的で状態を持つ末端処理である。
boolean noneMatch(LongPredicate predicate)
trueを返す。 これは短絡的で状態を持つ末端処理である。
OptionalLong findFirst()
OptionalLong、もしくはストリームが空であれば空のOptionalLongを返す。このストリームが出現順順序を持たなければ任意の要素が返される場合がある。 これは短絡的で状態を持つ末端処理である。
OptionalLong findAny()
OptionalLong、もしくはストリームが空であれば空のOptionalLongを返す。 これは短絡的で状態を持つ末端処理である。
この処理の動作は明示的に非決定的であり、どの要素を選んでもよい。これにより並列実行時の性能を最大化できる。その際のコストは同じ情報源に対する複数回の呼び出しが同じ値を返さないことである(もし安定した結果を望むならば、代わりにfindFirst()を用いよ)。
DoubleStream asDoubleStream()
Stream<Long> boxed()
LongStream sequential()
BaseStreamこれは中間処理である。
sequential インタフェース内 BaseStream<Long,LongStream>LongStream parallel()
BaseStreamこれは中間処理である。
parallel インタフェース内 BaseStream<Long,LongStream>PrimitiveIterator.OfLong iterator()
BaseStreamこれは末端処理である。
iterator インタフェース内 BaseStream<Long,LongStream>Spliterator.OfLong spliterator()
BaseStreamこれは末端処理である。
spliterator インタフェース内 BaseStream<Long,LongStream>static LongStream.Builder builder()
LongStreamのビルダを返す。
static LongStream empty()
LongStreamを返す。
static LongStream of(long t)
LongStreamを返す。
static LongStream of(long... values)
static LongStream iterate(long seed, LongUnaryOperator f)
seedに対する関数fの繰り返しの適用によって生成された無限LongStreamを返す。seed, f(seed), f(f(seed))などからなるLongStreamを生成する。 LongStreamの最初の要素(位置0)はseedによって与えられる。n > 0に対しては、位置nの要素はfを位置n - 1の要素に適用した結果である。
static LongStream generate(LongSupplier s)
LongSupplierによって生成される、逐次的な無限ストリームを返す。定数のストリームや乱数のストリームなどを生成するのに向いている。
static LongStream range(long startInclusive, long endExclusive)
startInclusive(この値を含む)からendExclusive(この値を含まない)まで、1ずつ増加する順序を持つ逐次的なLongStreamを返す。
static LongStream rangeClosed(long startInclusive, long endInclusive)
startInclusive(この値を含む)からendInclusive(この値を含む)まで、1ずつ増加する順序を持つ逐次的なLongStreamを返す。
static LongStream concat(LongStream a, LongStream b)