ありがとうあなたは二回かに一度ソースを横断し、IntSummaryStatistics
を使用する必要がある場合は、あなたが求めています。それは言うのは難しい測定することなく
IntSummaryStatistics summaryStatistics = Stream.of(0.55f, 0.45f, 0.5f, 0.65f, 0f)
.filter(i -> i > 0.5)
.mapToInt(i -> (int) (i * 100 - 50))
.summaryStatistics();
summaryStatistics.getSum();
summaryStatistics.getCount();
が、いくつかの操作は、SIZED
フラグをクリア何も操作がない場合count
を用いた場合のことに注意してください:
Stream.of(0.55f, 0.45f, 0.5f, 0.65f, 0f)
.filter(i -> i > 0.5)
.mapToInt(i -> (int) (i * 100 - 50))
.count();
Stream.of(0.55f, 0.45f, 0.5f, 0.65f, 0f)
.filter(i -> i > 0.5)
.mapToInt(i -> (int) (i * 100 - 50))
.sum();
バーサス:同様に、これは安くなるだろう完全にスキップすることができます。例えば: - これはスキップされ、実際にはJavaの-9で
long result = Stream.of(1, 2, 3, 4, 5)
.mapToInt(x -> {
System.out.println("mapping");
return x;
})
.count();
System.out.println(result);
mapToInt
は、ここですべて処理する必要はありません。同じ最適化はIntSummaryStatistics
では行われません。カウントは常に計算されます。あなたの例ではそうではありませんが、知っておくとよいことです。
いずれにせよcount
とsum
を使用すると言いますから、私はまだIntSummaryStatistics
を2回以上繰り返して選択します。 IntSummaryStatistics
内で実行される他の2つの操作は、Math.min
とMath.max
です。
「SummaryStatistics」とは何か...説明してください... [IntSummaryStatistics](https://docs.oracle.com/javase/8/docs/api/java/util/IntSummaryStatistics)のような話をしていますか? html)はここにありますか? – nullpointer
@nullpointerはい、それはIntSummaryStatisticsまたはDoubleSummaryStatisticsのような他の型です。 summaryStatisticsはメソッド名です。 –
あなたは合計とカウントだけにアクセスしたいので、なぜgetSumとgetCountはあなたにとって役に立たないのですか? – nullpointer