Iterable<Integer>
の合計を計算する必要があります。IterableからSumOfIntを計算する
final Iterable<Integer> score = this.points()
final sum = new SumOfInts(...).value()
クラスSumOfInts
を使用してこれを行うにはどうすればよいですか?
Iterable<Integer>
の合計を計算する必要があります。IterableからSumOfIntを計算する
final Iterable<Integer> score = this.points()
final sum = new SumOfInts(...).value()
クラスSumOfInts
を使用してこれを行うにはどうすればよいですか?
することができますCactoos 0.22以来:
int sum = new SumOf(1, 2, 3).intValue();
質問が正しく分かった場合は、この例のようなコードを使用して繰り返しを合計することができます。
final Iterable<Integer> score = Arrays.asList(1, 2, 3, 4);
Optional<Integer> sum = StreamSupport.stream(score.spliterator(), false).reduce((i1, i2) -> i1 + i2);
System.out.println(sum.get());
印刷結果である:
10
説明:
のIterableのストリーミングをspliteratorとspliteratorに変換することができます。その後、ストリームを縮小することができます。
ストリームを取得したらすぐに、複数の方法でリダクションを解決できます。
別の方法:あなたがOptional
結果を取り除くよう
int summed = StreamSupport.stream(score.spliterator(), false).mapToInt(Integer::intValue).sum();
System.out.println(summed);
これは、おそらく、よりよいです。
Integer
をに変換する方法の例は見つかりませんでしたが、Scalar
はこのようなことができます。
public long sum() throws Exception {
final List<Scalar<Number>> score = this.points()
.stream()
.map(this::toScalar)
.collect(Collectors.toList());
return new SumOfInts(score).value();
}
private Scalar<Number> toScalar(final Number number) {
return() -> number;
}
しかし、私は良い方法があると確信しています。
SumOfIntsの実装はありますか? –
@DanyalSandeelo [Here](https://github.com/yegor256/cactoos/blob/master/src/main/java/org/cactoos/iterable/SumOfInts.java)。質問のタグに触発されています。 – thanopi57
'Iterable>を' Iterable > 'またはJava 8:' score.stream()。mapToInt(i - > i).sum(); 'に変換する必要があります。 –
assylias