본문 바로가기

Java

스트림 기본 정리

 

1. 스트림은 무엇인가?

스트림은 자바 8 API에 새로 추가된 기능이다.

스트림을 사용하면 다음과 같은 이점이 있다.

  • 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다.
  • 선언형으로 코드를 구현 할 수 있다. 즉, 루프와 if 조건문 등의 제어 블록 없이 원하는 로직을 만들어 낼 수 있다.
  • 여러 빌딩 블록 연산을 연결할 수 있다. 예)filter 연산 후 sorted 연산 후 map 연산을 하는 파이프라인을 만들 수 있다.
  • 스레드와 락을 걱정할 필요가 없다.

 

요약: 스트림은 더 간결하고 가독성이 높아지고 유연성이 좋고 성능이 좋다

 

 

2. 컬렉션과 스트림

컬렉션과 스트림 사이에는 다음과 같은 차이점이 있다.

 

  컬렉션 스트림
데이터를 언제 계산하는지

적극적 생산 (현재 자료구조가 포함하는 모든 값을 메모리에 미리 저장)

게으른 생산 (요청할 때만 요소를 계산)
외부 반복과 내부 반복

외부 반복 (for-each 등을 사용하여 직접 요소를 반복해야한다.)

내부 반복 (반복을 알아서 처리 해준다.)
  최적화 달성이 어렵다. 병렬성 구현을 자동적으로 선택한다.

 

 

3. 스트림 연산

스트림 연산은 두 그룹으로 구분할 수 있다.

 

- 서로 연결되어 파이프라인을 형성한다. => 중간 연산

- 파이프라인을 닫는다. => 최종 연산

 

중간 연산의 특징

  • 쇼트서킷 - 모든 요소에 대해서 연산을 하지 않는다.
  • 루프 퓨젼 - 각 요소에 따라 서로 다른 연산이 한 과정으로 병합된다. 
반응형

'Java' 카테고리의 다른 글

람다 표현식을 활용한 디자인패턴 - 템플릿 메서드  (0) 2020.04.08
람다 표현식을 활용한 디자인패턴 - 전략 패턴  (0) 2020.04.08
스트림 활용 정리  (0) 2020.04.04
Optional  (0) 2020.03.29
인터페이스, Interface  (0) 2020.02.17