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, unordered
LongStream 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)