[Java] lambda 표현식에서 index 사용하기 (Atomic)

Song_Song·2021년 11월 30일
0
post-custom-banner
for(String st : Str){
	System.out.print(index++);
}

위 처럼 반복문이 돌 때마다 인덱스를 증가or감소 하여 처리하는 로직을 함수형 프로그래밍에서 사용하고 싶을 때가 있다.

하지만, 람다 표현식 내부에서는 final이나 final처럼 동작하는 (immutable) 숫자가 들어가지 않으면 아래와 같은 에러를 뱉는다.

sample.stream().forEach(x -> x.getSeq + i++); // Error

Variable used in lambda expression should be final or effectively final

이럴 때 사용하는 게 AtomicInteger, AtomicLong 이다.

AtomicInteger counter = new AtomicInteger(0);

sample
	.stream()
	.forEach(x -> x.getSeq + counter.getAndIncrement()); 현재 값을 가져온 뒤 1 증가
profile
성장을 위한 정리 블로그
post-custom-banner

0개의 댓글