public interface DoubleStream extends BaseStream<Double,DoubleStream>
double
に特化したStream
である。 次の例はStream
とDoubleStream
を使った集計処理を示し、赤いウィジェットの重さの和を計算する。
double sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToDouble(w -> w.getWeight())
.sum();
更なるストリームの仕様・処理・ストリームパイプライン・並列性についてはStream
のクラスドキュメントとjava.util.streamのパッケージドキュメントを参照せよ。
修飾子とタイプ | インタフェースと説明 |
---|---|
static interface |
DoubleStream.Builder
DoubleStream の可変なビルダ StreamBuilder はライフサイクルを持ち、要素を追加できる構築中段階から始まり、要素を追加できなくなる構築済段階に移行する。 |
修飾子とタイプ | メソッドと説明 |
---|---|
boolean |
allMatch(DoublePredicate predicate)
このストリームの全ての要素が与えられた述語に適合するか返す。
|
boolean |
anyMatch(DoublePredicate predicate)
このストリームのある要素が与えられた述語に適合するか返す。
|
OptionalDouble |
average()
このストリームの算術平均を表す
OptionalDouble 、またはこのストリームが空ならば空のOptionalDouble いずれかの要素がNaN であるか、いずれかの時点での和がNaN である場合、平均値はNaN となる。 |
Stream<Double> |
boxed()
このストリームの要素を
Double にボックス化した要素からなるStream を返す。 |
static DoubleStream.Builder |
builder()
DoubleStream のビルダを返す。 |
<R> R |
collect(Supplier<R> supplier,
ObjDoubleConsumer<R> accumulator,
BiConsumer<R,R> combiner)
このストリームの要素に可変的簡約を実行する。
|
static DoubleStream |
concat(DoubleStream a,
DoubleStream b)
ストリームの要素が、最初のストリームの全ての要素の後に2つ目のストリームの全ての要素を並べたような、遅延的に連結されたストリームを返す。
|
long |
count()
このストリームの要素数を返す。
|
DoubleStream |
distinct()
このストリームの要素のうち重複を除いた要素からなるストリームを返す。
|
static DoubleStream |
empty()
空の逐次的
DoubleStream を返す。 |
DoubleStream |
filter(DoublePredicate predicate)
このストリームの要素のうち、与えられた述語に適合する要素からなるストリームを返す。
|
OptionalDouble |
findAny()
このストリームのある要素を表す
OptionalDouble 、もしくはストリームが空であれば空のOptionalDouble を返す。 |
OptionalDouble |
findFirst()
このストリームの最初の要素を表す
OptionalDouble 、もしくはストリームが空であれば空のOptionalDouble を返す。 |
DoubleStream |
flatMap(DoubleFunction<? extends DoubleStream> mapper)
与えられた写像関数をこのストリームの各要素に適用して生成したストリームの内容で各要素を置き換えた結果からなるストリームを返す。
|
void |
forEach(DoubleConsumer action)
このストリームの各要素にアクションを適用する。
|
void |
forEachOrdered(DoubleConsumer action)
このストリームの各要素にアクションを適用する。
|
static DoubleStream |
generate(DoubleSupplier s)
各要素が
DoubleSupplier によって生成される、逐次的な無限Stream を返す。 |
static DoubleStream |
iterate(double seed,
DoubleUnaryOperator f)
初期要素
seed に対する関数f の繰り返しの適用によって生成された無限DoubleStream を返す。 |
PrimitiveIterator.OfDouble |
iterator()
このストリームの要素のイテレータを返す。
|
DoubleStream |
limit(long maxSize)
このストリームの要素からなり、長さが
maxSize より長くならないように切り詰められたストリームを返す。 |
DoubleStream |
map(DoubleUnaryOperator mapper)
このストリームの要素に与えられた関数を適用した結果からなるストリームを返す。
|
IntStream |
mapToInt(DoubleToIntFunction mapper)
このストリームの要素に与えられた関数を適用した結果からなる
IntStream を返す。 |
LongStream |
mapToLong(DoubleToLongFunction mapper)
このストリームの要素に与えられた関数を適用した結果からなる
LongStream を返す。 |
<U> Stream<U> |
mapToObj(DoubleFunction<? extends U> mapper)
このストリームの要素に与えられた関数を適用した結果からなる、オブジェクトを値として持つ
Stream を返す。 |
OptionalDouble |
max()
このストリームの最大要素を表す
OptionalDouble 、またはこのストリームが空ならば空のOptionalDouble もしストリームのいずれかの要素がNaNであれば、最大要素はDouble.NaN となる。 |
OptionalDouble |
min()
このストリームの最小要素を表す
OptionalDouble 、またはこのストリームが空ならば空のOptionalDouble もしストリームのいずれかの要素がNaNであれば、最小要素はDouble.NaN となる。 |
boolean |
noneMatch(DoublePredicate predicate)
このストリームのどの要素も与えられた述語に適合しないか返す。
|
static DoubleStream |
of(double... values)
要素が指定された値であるような逐次的なストリームを返す。
|
static DoubleStream |
of(double t)
Returns a sequential
DoubleStream containing a single element.
|
DoubleStream |
parallel()
並列であり同等なストリームを返す。
|
DoubleStream |
peek(DoubleConsumer action)
このストリームの要素からなり、加えて結果のストリームから要素が消費されるごとにその要素にアクションを実行するストリームを返す。
|
OptionalDouble |
reduce(DoubleBinaryOperator op)
|
double |
reduce(double identity,
DoubleBinaryOperator op)
|
DoubleStream |
sequential()
逐次的であり同等なストリームを返す。
|
DoubleStream |
skip(long n)
このストリームの
n 個の要素を取り除いた残りの要素からなるストリームを返す。 |
DoubleStream |
sorted()
このストリームの要素を、整列した結果からなるストリームを返す。
|
Spliterator.OfDouble |
spliterator()
このストリームの要素のスプリッテレータを返す。
|
double |
sum()
このストリームの要素の和を返す。
|
DoubleSummaryStatistics |
summaryStatistics()
このストリームの要素の各種概要情報を表す
DoubleSummaryStatistics を返す。 |
double[] |
toArray()
このストリームの要素からなる配列を返す。
|
close, isParallel, onClose, unordered
DoubleStream filter(DoublePredicate predicate)
これは中間処理である。
DoubleStream map(DoubleUnaryOperator mapper)
これは中間処理である。
<U> Stream<U> mapToObj(DoubleFunction<? extends U> mapper)
Stream
を返す。 これは中間処理である。
IntStream mapToInt(DoubleToIntFunction mapper)
IntStream
を返す。 これは中間処理である。
LongStream mapToLong(DoubleToLongFunction mapper)
LongStream
を返す。 これは中間処理である。
DoubleStream flatMap(DoubleFunction<? extends DoubleStream> mapper)
DoubleStream distinct()
Double.compare(double, double)
に従って比較される。 これは状態を持つ中間処理である。
DoubleStream sorted()
Double.compare(double, double)
に従って比較される。 これは状態を持つ中間処理である。
DoubleStream peek(DoubleConsumer action)
これは中間処理である。
並列ストリームパイプラインの場合、アクションは上流の処理から利用可能になった際に任意の時間と任意のスレッドで呼ばれる。もしアクションが共有状態を変更した場合、必要な同期を用意する必要がある。
DoubleStream limit(long maxSize)
maxSize
より長くならないように切り詰められたストリームを返す。 これは短絡的で状態を持つ中間処理である。
DoubleStream skip(long n)
void forEach(DoubleConsumer action)
これは末端処理である。
並列ストリームパイプラインの場合、この処理はストリームの出現順順序を尊重するとは限らない。そのようにしてしまうと並列処理の利点を犠牲にしてしまうためである。与えられた要素に対して、アクションはライブラリが選んだ任意の時間と任意のスレッドで実行される。もしアクションが共有状態を変更するならば、アクションは必要な同期処理を用意する責任を負う。
void forEachOrdered(DoubleConsumer action)
これは末端処理である。
double[] toArray()
これは末端処理である。
double reduce(double identity, DoubleBinaryOperator op)
double result = identity;
for (double element : this stream)
result = accumulator.applyAsDouble(result, element)
return result;
ただし逐次的に実行されるとは制約されていない。 値identity
は累積関数の単位元である必要がある。つまり、任意のx
に対してaccumulator.apply(identity, x)
はx
と等しい。accumulator
関数は結合的関数である必要がある。
これは末端処理である。
OptionalDouble reduce(DoubleBinaryOperator op)
OptionalDouble
を返す。これは次と等しい。
boolean foundAny = false;
double result = null;
for (double element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.applyAsDouble(result, element);
}
return foundAny ?OptionalDouble.of(result) : OptionalDouble.empty();
ただし逐次的に実行されるとは制約されていない。 accumulator
関数は結合的関数である必要がある。
これは末端処理である。
<R> R collect(Supplier<R> supplier, ObjDoubleConsumer<R> accumulator, BiConsumer<R,R> combiner)
ArrayList
などの可変な結果コンテナであるものであり、結果を置き換えるのではなく結果の状態を変更して各要素を組み入れるような簡約である。これは次のコードと同じ結果を生成する。
R result = supplier.get();
for (double element : this stream)
accumulator.accept(result, element);
return result;
reduce(double, DoubleBinaryOperator)
のように、collect
処理は追加の同期処理を必要とせずに並列化できる。
これは末端処理である。
double sum()
return reduce(0, Double::sum);
しかし、浮動小数点の和は正確でないため、上記のコードはこのメソッドによる和の計算と等価とは限らない。 いずれかの要素がNaN
であるか、いずれかの時点での和がNaN
である場合、和はNaN
となる。浮動小数点の和は入力値と加算演算子の順序の両方の関数である。このメソッドにおける加算の順序は実装が柔軟に計算結果の速度と精度を改善できるようあえて定義されていない。特に、このメソッドは補償付き和や他の技術を使って数値和の誤差の限度をdouble
値の単純な和と比較して減らすように実装される場合がある。
これは末端処理である。
OptionalDouble min()
OptionalDouble max()
long count()
OptionalDouble average()
DoubleSummaryStatistics summaryStatistics()
boolean anyMatch(DoublePredicate predicate)
false
を返す。 これは短絡的で状態を持つ末端処理である。
boolean allMatch(DoublePredicate predicate)
true
を返す。 これは短絡的で状態を持つ末端処理である。
boolean noneMatch(DoublePredicate predicate)
true
を返す。 これは短絡的で状態を持つ末端処理である。
OptionalDouble findFirst()
OptionalDouble
、もしくはストリームが空であれば空のOptionalDouble
を返す。このストリームが出現順順序を持たなければ任意の要素が返される場合がある。 これは短絡的で状態を持つ末端処理である。
OptionalDouble findAny()
OptionalDouble
、もしくはストリームが空であれば空のOptionalDouble
を返す。 これは短絡的で状態を持つ末端処理である。
この処理の動作は明示的に非決定的であり、どの要素を選んでもよい。これにより並列実行時の性能を最大化できる。その際のコストは同じ情報源に対する複数回の呼び出しが同じ値を返さないことである(もし安定した結果を望むならば、代わりにfindFirst()
を用いよ)。
Stream<Double> boxed()
DoubleStream sequential()
BaseStream
これは中間処理である。
sequential
インタフェース内 BaseStream<Double,DoubleStream>
DoubleStream parallel()
BaseStream
これは中間処理である。
parallel
インタフェース内 BaseStream<Double,DoubleStream>
PrimitiveIterator.OfDouble iterator()
BaseStream
これは末端処理である。
iterator
インタフェース内 BaseStream<Double,DoubleStream>
Spliterator.OfDouble spliterator()
BaseStream
これは末端処理である。
spliterator
インタフェース内 BaseStream<Double,DoubleStream>
static DoubleStream.Builder builder()
DoubleStream
のビルダを返す。
static DoubleStream empty()
DoubleStream
を返す。
static DoubleStream of(double t)
DoubleStream
containing a single element.
static DoubleStream of(double... values)
static DoubleStream iterate(double seed, DoubleUnaryOperator f)
seed
に対する関数f
の繰り返しの適用によって生成された無限DoubleStream
を返す。seed
, f(seed)
, f(f(seed))
などからなるLongStream
を生成する。 DoubleStream
の最初の要素(位置0
)はseed
によって与えられる。n > 0
に対しては、位置n
の要素はf
を位置n - 1
の要素に適用した結果である。
static DoubleStream generate(DoubleSupplier s)
DoubleSupplier
によって生成される、逐次的な無限Stream
を返す。定数のストリームや乱数のストリームなどを生成するのに向いている。
static DoubleStream concat(DoubleStream a, DoubleStream b)