上級 › stream has already been operated upon の原因と直し方 › パターン4
stream has already been operated upon の原因と直し方
Streamは1回しか終端操作できません。
1 import java.util.Arrays; 2 3 public class Main { 4 public static void main(String[] args) { 5 int[] nums = {1, 2, 3}; 6 var s = Arrays.stream(nums); 7 nums[0] = ___; ^ 8 System.out.println(s.sum()); 9 } 10 }
出力: 105期待: 6 (コンパイルは通っています)
空欄を埋めてビルドを通す
Streamは終端操作の瞬間まで実際に値を読みません。作った後で元の配列を書き換えると、その変更が結果に反映されてしまいます。
次の問題