[JAVA] Stream 총정리
Streams
- 자바 8이전에는 배열 또는 컬렉션 인스턴스를 다루는 방법은 for 또는 foreach 문을 돌면서 요소 하나씩을 꺼내서 다루는 방법이었음
- 간단한 경우라면 상관없지만, 로직이 복잡해질수록 코드의 양이 복잡해져서 여러 로직이 섞이게 됨
- Stream은 '데이터의 흐름'임
- 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터랑 하고 가공된 결과를 얻을 수 있음
- 람다를 이용해서 코드의 양을 줄이고 간결하게 표현 가능
- 즉, 배열과 컬렉션을 함수형으로 처리 가능
- 또 하나의 장점은 간단하게 병렬처리가 가능
- 병렬처리 : 하나의 작업을 둘 이상의 작업으로 잘게 나눠서 동시에 진행하는 것
- 즉, 쓰레드를 이용해 많은 요소들을 빠르게 처리
Streams의 순서
- 생성하기 : 스트림 인스턴스 생성
- 가공하기 : 필터링(filtering) 및 맵핑(mapping)등 원하는 결과를 만들어가는 중간 작업
- 결과 만들기 : 최종적으로 결과를 만들어내는 작업
Streams 생성하기
- 보통 배열과 컬렉션을 이용해서 스트림을 만들지만 이 외에도 다양한 방법으로 스트림을 만들 수 있음
- 스트림을 이용하기 위해서는 먼저 생성을 해야 함.
배열 Stream
- 배열은 다음과 같이 Arrays.stream 메소드를 사용
String[] arr = new String[]{"a", "b", "c"};
Stream stream = Arrays.stream(arr);
Stream streamOfArrayPart =
Arrays.stream(arr, 1, 3); // 1~2 요소 [b, c]
컬렉션 Stream
- 컬렌션 타입(Collection, List, Set)의 경우 인터페이스에 추가된 디폴트 메소드 stream 을 이용해서 스트림을 만들 수 있음
List list = Arrays.asList("a", "b", "c");
Stream stream = list.stream();
Stream parallelStream = list.parallelStream(); // 병렬 처리 스트림
댓글
댓글 쓰기