자바 스트림(Stream) API 활용하기
F-Lab : 상위 1% 개발자들의 멘토링
AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!

자바 스트림(Stream) API 소개
자바 8에서 소개된 스트림(Stream) API는 컬렉션 처리를 위한 강력한 도구입니다. 스트림 API를 사용하면 데이터 컬렉션을 선언적으로 처리할 수 있으며, 람다 표현식과 함께 사용하여 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.
왜냐하면 스트림 API는 데이터를 추상화한 스트림을 통해 다양한 연산을 연속적으로 수행할 수 있기 때문입니다. 이는 컬렉션을 직접 조작하는 것보다 훨씬 효율적이고 간결한 코드를 작성할 수 있게 해줍니다.
스트림 API는 필터링, 매핑, 정렬, 리듀싱 등 다양한 데이터 처리 연산을 지원합니다. 이 글에서는 자바 스트림 API의 기본 개념과 활용 방법에 대해 알아보겠습니다.
스트림 생성하기
스트림을 사용하기 위해서는 먼저 스트림을 생성해야 합니다. 자바에서는 컬렉션, 배열, 파일, 정규 표현식 등 다양한 소스로부터 스트림을 생성할 수 있습니다.
왜냐하면 스트림 API는 데이터 소스의 추상화를 제공하기 때문에, 소스의 종류에 상관없이 일관된 방식으로 데이터를 처리할 수 있습니다. 예를 들어, 리스트로부터 스트림을 생성하는 방법은 다음과 같습니다.
List<String> list = Arrays.asList("Apple", "Banana", "Cherry"); Stream<String> stream = list.stream();
이 코드는 리스트에서 스트림을 생성하고, 이 스트림을 통해 리스트의 각 요소를 처리할 수 있게 합니다.
스트림 연산 수행하기
스트림 생성 후에는 다양한 중간 연산(intermediate operations)과 최종 연산(terminal operations)을 수행할 수 있습니다. 중간 연산은 필터링, 매핑, 정렬 등을 수행하며, 스트림을 반환하여 연산을 연쇄적으로 연결할 수 있습니다.
왜냐하면 중간 연산은 스트림을 변환하는 과정이며, 이 변환된 스트림을 통해 추가적인 연산을 수행할 수 있기 때문입니다. 최종 연산은 스트림의 처리를 마무리하며, 스트림을 소비하여 결과를 반환합니다.
예를 들어, 다음 코드는 스트림을 사용하여 문자열 리스트에서 "a"를 포함하는 요소만 필터링하고, 대문자로 변환한 후, 정렬하여 출력하는 예제입니다.
list.stream() .filter(s -> s.contains("a")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);
이 코드는 중간 연산과 최종 연산을 연쇄적으로 연결하여 데이터를 처리합니다. forEach
는 최종 연산으로, 스트림의 각 요소에 대해 주어진 작업을 수행합니다.
스트림의 병렬 처리
스트림 API의 또 다른 강력한 기능은 병렬 처리입니다. parallelStream()
메서드를 사용하면 컬렉션을 병렬 스트림으로 변환할 수 있으며, 이를 통해 데이터를 멀티코어 프로세서에서 병렬로 처리할 수 있습니다.
왜냐하면 병렬 스트림은 내부적으로 포크/조인 프레임워크를 사용하여 작업을 여러 스레드에 분산시키기 때문입니다. 이는 대량의 데이터를 처리할 때 성능을 크게 향상시킬 수 있습니다.
예를 들어, 다음 코드는 병렬 스트림을 사용하여 리스트의 각 요소를 대문자로 변환하는 예제입니다.
list.parallelStream() .map(String::toUpperCase) .forEach(System.out::println);
이 코드는 데이터의 병렬 처리를 통해 더 빠른 성능을 달성할 수 있습니다. 하지만 모든 상황에서 병렬 스트림이 더 나은 성능을 제공하는 것은 아니므로, 사용 전에 성능 테스트를 수행하는 것이 좋습니다.
결론
자바 스트림 API는 데이터 컬렉션을 효율적으로 처리할 수 있는 강력한 도구입니다. 스트림을 통해 선언적으로 데이터를 처리할 수 있으며, 람다 표현식과 함께 사용하여 코드의 가독성을 높일 수 있습니다.
왜냐하면 스트림 API는 데이터 처리 작업을 간결하고 효율적으로 수행할 수 있게 해주며, 병렬 처리를 통해 성능을 향상시킬 수 있기 때문입니다. 이 글을 통해 자바 스트림 API의 기본적인 사용 방법과 그 장점에 대해 이해하셨기를 바랍니다.
앞으로 자바 프로그래밍을 할 때 스트림 API를 적극적으로 활용하여 더 효율적이고 간결한 코드를 작성해 보시기 바랍니다.
이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.