Engineering Note

[Java] Stream, map() 본문

Programming Language/Java

[Java] Stream, map()

Software Engineer Kim 2025. 8. 27. 15:30

Stream

- Java8부터 도입된 컬렉션 및 배열의 요소를 반복처리 하기 위한 기술

- for문과 Iterator와 비교해 가독성이 좋고, 재사용성이 좋다.

- Stream을 이용하면 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방식으로 다룰 수 있다.

 

Stream은 중간 연산과 최종 연산이 있다.

중간 연산은 연산 결과가 스트림인 연산, 스트림에 연속해서 중간 연산을 할 수 있다. 최종 연산은 연산 결과가 스트림이 아닌 연산이다. 스트림의 요소를 소모하므로 단 한번만 사용할 수 있다.

중간 연산 예시 : map(), filter()

최종 연산 예시 : forEach(), count()

 

 

 

변환 - map()

- 스트림의 요소에 저장된 값 중에서 원하는 필드만 뽑아내거나 특정 형태로 변환해야 할 때가 있다. 이 때 사용하는 것이 바로 map()이다.

 

선언부

Stream<R> map(Function<? super T, ? extends R> mapper)

 

- 매개변수로 T타입을 R타입으로 변환해서 반환하는 함수를 지정해야한다.

 

예시, File의 스트림에서 파일의 이름만 뽑아서 출력하는 코드

Stream<File> fileStream = Stream.of(new File("Ex1.java"), new File("Ex1"), new File("Ex1.bak"), new File("Ex2.java"), new File("Ex1.txt");

// map()으로 Stream<File>을 Stream<String>으로 변환
Stream<String> filenameStream = fileStream.map(File::getName);
filenameStream.forEach(System.out::println);

 

 

map()은 중간 연산이다. 연산 결과를 String을 요소로 하는 스트림이다. map()으로 Stream<File>을 Stream<String>으로 변환했다고 볼 수 있다.

Comments