stream 을 사용할 때 외부 변수가 필요한 경우가 있을 수 있다.
그러나 외부 변수와 stream을 같이 사용하는 경우에는 특별히 주의해야 할 점이 있다.
Reference data type은 stream 영역 내에서 변경이 가능하지만
Primitive data type은 stream 영역 내에서 변경이 불가능하다.
Primitive data type을 사용하기 위해서는 무조건 final or effectively final 변수만 사용 가능하다.
참고 내용은 아래에서 확인할 수 있다.
https://cobbybb.tistory.com/19
int answer = 0;
for (int i = 0; i <= 9; i++) {
if (Arrays.stream(numbers).anyMatch(number -> number == i)) {
continue;
}
answer += i;
}
위 코드를 사용하면 오류가 생긴다.
아래와 같이 변경을 하면 사용 가능
int answer = 0;
for (int i = 0; i <= 9; i++) {
int test = i;
if (Arrays.stream(numbers).anyMatch(number -> number == test)) {
continue;
}
answer += i;
}