주의
- 본 게시글은 ChatGPT로 작성되었습니다. 잘못된 정보가 있을 수 있습니다.
개요:
스트림 API는 자바 8에서 도입된 기능으로, 컬렉션의 데이터를 쉽게 처리할 수 있는 방법을 제공합니다. 스트림을 사용하면 필터링, 매핑, 정렬, 집계 등의 작업을 훨씬 간결하고 직관적으로 수행할 수 있습니다. 함수형 프로그래밍 스타일을 지원하며, 람다식을 통해 코드를 더욱 깔끔하게 작성할 수 있습니다.
상세:
스트림의 기본 개념
- 스트림: 데이터의 흐름을 표현하며, 데이터 소스(예: 컬렉션, 배열 등)에서 파이프라인을 통해 데이터를 처리합니다.
- 지연 계산: 스트림은 필요한 경우에만 계산하며, 중간 연산과 최종 연산으로 나뉩니다.
스트림의 주요 특징
- 불변성: 스트림의 결과는 원본 데이터를 변경하지 않습니다.
- 연속된 작업: 여러 작업을 연결하여 사용할 수 있으며, 각 작업은 결과를 새로운 스트림으로 반환합니다.
주요 메서드
filter(Predicate<T> predicate): 조건에 맞는 요소 필터링map(Function<T, R> mapper): 요소 변환collect(Collector<T, A, R> collector): 결과를 컬렉션으로 집계reduce(B identity, BinaryOperator<T> accumulator): 집계 연산 수행
사용 예시
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("C"))
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(filteredNames); // [CHARLIE]
}
}예상 면접 질문/답안:
-
스트림 API란 무엇인가요?
- 스트림 API는 컬렉션의 데이터를 쉽게 처리할 수 있는 도구입니다. 데이터를 필터링, 변환, 집계하는 작업을 간결하고 효율적으로 수행할 수 있게 해줍니다.
-
스트림의 중간 연산과 최종 연산의 차이는 무엇인가요?
- 중간 연산은 스트림을 변환하여 새로운 스트림을 반환하고, 최종 연산은 스트림을 소모하여 결과를 반환합니다. 예를 들어,
filter는 중간 연산이고,collect는 최종 연산입니다.
- 중간 연산은 스트림을 변환하여 새로운 스트림을 반환하고, 최종 연산은 스트림을 소모하여 결과를 반환합니다. 예를 들어,
-
람다식이 스트림 API 사용에 어떤 역할을 하나요?
- 람다식은 간결한 구문으로 함수형 인터페이스를 구현할 수 있게 해줍니다. 스트림 API의 메서드에 람다식을 사용하여 필터링이나 매핑 등을 간편하게 정의할 수 있습니다.
-
스트림을 사용하지 않고 동일한 작업을 수행할 수 있나요?
- 가능합니다. 하지만 전통적인 루프와 조건문을 사용할 경우 훨씬 더 많은 코드가 필요하며, 가독성이 떨어질 수 있습니다. 스트림 API는 더 직관적이고 declarative한 방식으로 이러한 작업을 할 수 있게 도와줍니다.
-
스트림의 병렬처리 기능에 대해 설명해 주세요.
- 스트림은 병렬처리를 지원하여 데이터를 여러 스레드에서 동시에 처리할 수 있습니다. 이는
parallelStream()메서드를 사용할 통해 쉽게 구현할 수 있으며, 대규모 데이터 처리 성능을 향상시킬 수 있습니다.
- 스트림은 병렬처리를 지원하여 데이터를 여러 스레드에서 동시에 처리할 수 있습니다. 이는
스스로 찾아보면 좋은 연관 주제:
- 람다식과 함수형 프로그래밍: 자바에서 함수형 프로그래밍의 기초와 람다식의 사용법
- 컬렉션 프레임워크: 자바의 다양한 컬렉션 인터페이스 및 구현 클래스 탐색
- Optional 클래스: null 안전성을 제공하는 방법과 사용 방법
- 병렬 스트림: 성능 향상을 위한 스트림의 병렬 처리 기법
- 자바 8의 새로운 기능: 자바 8에서 도입된 다양한 새로운 기능에 대한 개요