본문 바로가기

좋아하는 것_매직IT/26.Java

Java 스트림(Stream) 깔끔하게 정리하기

반응형

Java 8에서 새로 추가된 스트림(Stream) 기능은 컬렉션을 더욱 효율적이고 간편하게 다룰 수 있게 해줍니다.
스트림은 데이터 처리 방식을 명시적으로 표현할 수 있게 해주어 코드 이해도를 높이고 병렬 처리를 더욱 쉽게 할 수 있습니다.

스트림(Stream)이란?

스트림은 데이터를 처리하는데 사용되는 연속적인 데이터 요소의 시퀀스입니다.
각 요소는 한 번에 하나씩만 처리되며, 이는 배열이나 컬렉션과 같은 데이터 소스에서 생성될 수 있습니다.
스트림은 중간 연산과 최종 연산으로 구성되어 있으며, 이를 통해 데이터를 변환하고 결과를 도출할 수 있습니다.

기본적인 스트림 예제

아래는 간단한 리스트를 이용한 스트림의 예제 코드입니다.

import java.util.Arrays;
import java.util.List;

public class StreamMagicExample {

    public static void main(String[] args) {
        List<String> names = Arrays.asList("Magic", "John", "Jane", "Doe", "Mary", "Smith");

        // 중간 연산: 길이가 4 이상인 이름만 필터링
        names.stream()
             .filter(name -> name.length() >= 4)

             // 중간 연산: 이름을 대문자로 변환
             .map(String::toUpperCase)

             // 최종 연산: 결과 출력
             .forEach(System.out::println);
    }
}

위 코드에 대해서 간단하게 설명해 보자면 아래와 같습니다. 
"filter" 는 중간 연산으로 조건에 맞는 요소만 걸러냅니다.
"map" 은 중간 연산으로 각 요소를 변환합니다.
"forEach"는 최종 연산으로 최종 결과를 출력합니다.

병렬스트림 활용

스트림은 병렬 처리를 간단하게 할 수 있는 기능을 제공합니다. 아래는 병렬 스트림을 이용한 예제 코드입니다.

import java.util.Arrays;
import java.util.List;

public class ParallelStreamMagicExample {

    public static void main(String[] args) {
        List<String> names = Arrays.asList("Magic", "John", "Jane", "Doe", "Mary", "Smith");

        // 병렬 스트림을 이용한 처리
        names.parallelStream()
             .filter(name -> name.length() >= 4)
             .map(String::toUpperCase)
             .forEach(System.out::println);
    }
}

위의 코드에서 parallelStream을 사용하여 간단하게 병렬 처리를 수행할 수 있습니다.

참고로 스트림은 데이터 처리를 보다 선언적이고 간결한 방식으로 수행할 수 있도록 도와주며,
병렬 처리를 통해 성능을 향상시킬 수 있는 강력한 기능을 제공한다고 보시면 됩니다.

이상으로 Java 스트림에 대한 간략한 소개와 예제를 살펴보았습니다. 

더 많은 예제와 프로그래밍으로 스트림 기능과 활용법을 학습하면서 코드 작성의 효율성을 높이는 방향으로 개발하시길 기원합니다.

오늘의 티스토리는 여기까지고요.
항상 믿고 봐주셔서 감사합니다.

728x90
300x250