타입이 지정된 스트림 toArray
메서드 참조로 스트림을 타입이 지정된 배열로 변환합니다.
코드 비교
✕ Pre-Streams
List<String> list = getNames();
String[] arr = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
arr[i] = list.get(i);
}
✓ Java 8+
String[] arr = getNames().stream()
.filter(n -> n.length() > 3)
.toArray(String[]::new);
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
타입 안전
Object[] 캐스트 없이 정확한 배열 타입을 얻습니다.
체이닝 가능
스트림 파이프라인의 끝에서 작동합니다.
간결함
수동 루프를 하나의 표현식으로 대체합니다.
이전 방식
수동 배열 복사
모던 방식
toArray(생성자)
JDK 버전
8
난이도
초급
JDK 지원
타입이 지정된 스트림 toArray
사용 가능
JDK 8 (2014년 3월) 이후 널리 사용 가능
동작 원리
toArray(IntFunction) 메서드는 스트림에서 올바르게 타입이 지정된 배열을 만듭니다. 생성자(String[]::new)는 스트림에 생성할 배열 타입을 알려줍니다.
관련 문서