IntStream reduce()初期値有り時の挙動
はじめに
IntStreamのreduce()の初期値(第一引数)の有無で
ループの回数が変わるということに
気が付きましたので書き残します。
初期値が無いとループの回数が1回減ります。
ので注意が必要です。
初期値無しの場合
reduce((total,i)-> total + i)
0回目無し
1回目から
Test.java
int result = IntStream.range(0, 4)
.reduce((total, i) -> {
System.out.println(i + "回目");
return total + i;
})
.orElseThrow();
System.out.println("result:" + result);
実行結果
1回目
2回目
3回目
result:6
初期値(0)有りの場合
reduce(0, (total,i)-> total + i)
0回目から
Test.java
public static void main(String[] args) {
int result = IntStream.range(0, 4)
.reduce(0, (total, i) -> {
System.out.println(i + "回目");
return total + i;
});
System.out.println("result:" + result);
実行結果
0回目
1回目
2回目
3回目
result:6
初期値(2)有りの場合
reduce(2, (total,i)-> total + i)
0回目から
Test.java
public static void main(String[] args) {
int result = IntStream.range(0, array.length)
.reduce(2, (total, i) -> {
System.out.println(i + "回目");
return total + i;
});
System.out.println("result:" + result);
実行結果
0回目
1回目
2回目
3回目
result:8
Author And Source
この問題について(IntStream reduce()初期値有り時の挙動), 我々は、より多くの情報をここで見つけました https://qiita.com/axs-dev/items/abfc187ab04c68db63f6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .