본문 바로가기

카테고리 없음

java stream

stream 을 사용할 때 외부 변수가 필요한 경우가 있을 수 있다.

그러나 외부 변수와 stream을 같이 사용하는 경우에는 특별히 주의해야 할 점이 있다.

Reference data type은 stream 영역 내에서 변경이 가능하지만

Primitive data type은 stream 영역 내에서 변경이 불가능하다.

Primitive data type을 사용하기 위해서는 무조건 final or effectively final 변수만 사용 가능하다.

참고 내용은 아래에서 확인할 수 있다.

https://cobbybb.tistory.com/19

 

람다 캡처링 :: Variable used in lambda expression should be final or effectively final의 이유

Intellij가 알아서 고쳐주던 아래 에러에 대해서 좀 더 깊숙히 알고자 정리하는 글입니다. Variable used in lambda expression should be final or effectively final 에러에 대한 결론부터 람다 실행시에 실행되..

cobbybb.tistory.com

 

 

 

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;
}