Java1 [Java] AtomicInteger - 자바 스트림에서 외부 변수를 변경할 수 있을까? 문제 상황 int a = 0; Arrays.stream(arr).map(value -> { value += a; a++; // 예외 발생 } ) 위의 코드처럼 외부 변수인 a를 스트림 안에서 변경을 하면 오류가 발생한다. 이유 Java Stream은 함수형 프로그래밍의 원칙을 따르기 때문에 부작용을 최소화하고 불변성을 강조한다. Stream은 데이터를 처리하는데 있어서 부작용을 최소화하고자 요소에 대한 연산을 수행할 때 각 단계에서 새로운 스트림을 생성하거나 기존 스트림을 변경하지 않고, 요소를 변환하는 연산들을 수행한다. 만약 외부 변수를 변경하면서 스트림을 사용하게 되면, 코드의 예측이 어려워지고 병렬 처리 및 lazy evaluation과 같은 이점이 상실될 수 있다. 결국 가변성이 있는 외부 요소.. Java 2024. 3. 15. 이전 1 다음