Java
Stream API 개요
Wanderer Kim
2023. 5. 5. 19:12
반응형
Java Stream이란?
Java Stream은 자바8에서 추가된 기능으로, collection요소들을 람다식으로 처리할 수 있는 기능을 제공합니다. stream을 사용하면 요소들을 필터링, 매핑, 정렬, 그룹화, 집계 등 다양한 작업을 수행할 수 있습니다.
stream은 크게 중간 연산과 최종 연산으로 구성됩니다. 중간 연산은 스트림을 반환하여 연속적으로 연산을 수행할 수 있도록 합니다. 최종 연산은 스트림을 닫아 더 이상 다른 작업을 수행할 수 없게 하며, 스트림에서 최종 결과를 반환합니다.
Stream 생성
stream을 생성하기 위해서는 먼저 collection 객체를 생성해야 합니다. 그리고 이 collection 객체에서 stream() 메서드를 호출하여 스트림을 생성합니다.
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();
위 코드에서는 Arrays.asList() 메서드를 사용하여 List 객체를 생성하고, 이 객체에서 stream() 메서드를 호출하여 stream 객체를 생성합니다.
중간 연산
중간 연산은 스트림을 반환하여 연속적으로 연산을 수행할 수 있도록 합니다. stream에서 제공하는 대표적인 중간 연산 메서드는 다음과 같습니다.
- filter : 주어진 조건에 맞는 요소만 걸러냅니다.
- map : 요소를 다른 요소로 매핑합니다.
- flatMap : 요소를 stream으로 변환한 다음, 이를 하나의 stream으로 병합합니다.
- distinct : 중복을 제거합니다.
- sorted : 요소를 정렬합니다.
- limit : 요소의 개수를 제한합니다.
- skip : 처음 n개의 요소를 생략합니다.
최종 연산
최종 연산은 스트림을 닫아 더 이상 다른 작업을 수행할 수 없게 하며, 스트림에서 최종 결과를 반환합니다. stream에서 제공하는 대표적인 최종 연산 메서드는 다음과 같습니다.
- forEach : 각 요소에 대해 주어진 동작을 수행합니다.
- count : 요소의 개수를 반환합니다.
- collect : 요소를 수집하여 새로운 컬랙션을 생성합니다.
- reduce : 초기값과 요소를 이용하여 값을 축적합니다.
- min : 요소 중 가장 작은 값을 반환합니다.
- max : 요소 중 가장 큰 값을 반환합니다.
- findFirst : 첫 번째 요소를 반환합니다.
- findAny : 임의의 요소를 반환합니다.
예를 들어, 다음 코드는 filter 메서드를 사용하여 문자열의 길이가 5 이하인 요소만 걸러내고, map 메서드를 사용하여 대문자로 변환한 요소를 출력하는 예제입니다.
List<String> list = Arrays.asList("apple", "banana", "orange");
list.stream()
.filter(s -> s.length() <= 5)
.map(String::toUpperCase)
.forEach(System.out::println);
728x90