스트림 API 개념
스트림 API
- 스트림 API란 자바 8부터 추가된
java.util.stream
패키지 - I/O 스트림과는 전혀 무관하다.
- 목적 : 배열을 포함한 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리가능하도록 만듦
- 장점
- 코드 간결
- 컬렉션과 배열 등 데이터 소스를 공통된 방식으로 접근 가능
- 중간처리와 최종 처리를 조합해서 처리 가능
- 중간처리 : 매핑, 필터링, 정렬 등 데이터 가공 담당
- 최종처리 : 반복, 카운팅, 평균, 총합 등 집계처리 담당, 최종처리는 한 개만 사용한다.
- 병렬처리 작업이 용이
- 연산의 결과를 원본에 반영하지않음 -> 결과를 새로운 컬렉션이나 배열에 담아서 반환가능
스트림 생성
예시 : List에 담긴 요소 중 3글자 이상인 요소를 순차적으로 출력하기 위한 코드
1 | //스트림 API사용 전 |
중간처리
예시
- map()메서드를 이용해 char[]로 구성된 스트림로 변경 후 각 요소의 length속성값을 출력
- return타입인 경우에는
return
예약어와 대괄호{}
를 생략 가능..map((item) -> {return item.toCharArray();})
=.map(item-> item.toCharArray())
- return타입인 아니경우 대괄호
{}
생략불가. - int 스트림을 mapToObj()로 문자열스트림으로 변경한 뒤 각 요소를 출력
1 | List<String> list = Arrays.asList("안녕","자바월드"); |
최종처리
- 매칭과 집계
- 예시 :
1 | public static void main(String[] args) { |
orElse와 orElseGet의 차이
- orElse 메소드는 해당 값이 null 이든 아니든 관계없이 항상 호출
- orElseGet 메소드는 해당 값이 null 일 때만 호출