[java] 스트림의 지연 연산과 종단 연산에 대한 설명

Java 8 이후에 도입된 스트림(Stream)은 데이터 처리를 위한 편리한 기능을 제공합니다. 스트림은 데이터를 처리하는데 있어서 기존의 컬렉션 처리 방식과는 다르게 지연 연산과 종단 연산을 사용합니다. 이번 포스트에서는 스트림의 지연 연산과 종단 연산에 대해 자세히 알아보겠습니다.

지연 연산(Lazy Evaluation)

스트림은 지연 연산을 이용하여 데이터를 처리합니다. 이는 스트림에서 요소를 가공하거나 변환하는 연산들이 바로 실행되지 않고, 실제로 필요한 시점에 실행되도록 하는 것을 의미합니다. 이렇게 함으로써 스트림은 효율적인 데이터 처리를 할 수 있습니다.

예를 들어, 다음과 같은 스트림이 있다고 가정해봅시다.

Stream<Integer> numbers = Stream.of(1, 2, 3, 4, 5);

만약 numbers 스트림에서 첫 번째로 나오는 요소를 제곱한 값을 구하려고 한다면, 다음과 같이 연산을 할 수 있습니다.

int result = numbers.map(n -> n * n).findFirst().orElse(0);

이때, numbers.map(n -> n * n)은 실제로는 어떤 연산도 수행하지 않습니다. 대신, 첫 번째 요소를 제곱한 값을 구하기 위해 findFirst()가 호출될 때 비로소 연산이 실행됩니다.

이처럼 스트림에서는 필요한 시점에만 연산을 수행하기 때문에, 불필요한 연산을 피하고 효율적으로 데이터를 처리할 수 있습니다.

종단 연산(Terminal Operation)

스트림의 종단 연산은 스트림의 데이터 처리를 완료하는 역할을 합니다. 종단 연산은 스트림의 요소를 소비하거나 결과 값을 생성하여 리턴하며, 스트림의 연산 파이프라인에 종료 단계를 정의합니다.

중요한 종단 연산 예시는 다음과 같습니다.

이러한 종단 연산들은 스트림의 데이터를 처리하여 최종 결과를 얻을 수 있도록 해주는 중요한 기능입니다.

결론

스트림의 지연 연산과 종단 연산은 자바에서 데이터를 처리하는 데 효율적인 방식을 제공합니다. 지연 연산은 필요한 시점에서만 연산을 수행하여 불필요한 연산을 피하고, 종단 연산은 스트림의 처리 결과를 리턴하는데 사용됩니다. 스트림을 잘 이용하여 효율적이고 간결한 코드를 작성할 수 있습니다.

더 자세한 내용은 다음 참고 자료를 확인해주세요.

이상으로 스트림의 지연 연산과 종단 연산에 대한 설명을 마치겠습니다. 감사합니다!