인생을 코딩하다.

[Java] 자바8 스트림(Stream) 본문

Java

[Java] 자바8 스트림(Stream)

Hyung1 2020. 10. 7. 04:53
728x90
반응형

스트림 

  • 자료의 대상과 관계없이 동일한 연산을 수행할 수 있는 기능(자료의 추상화)
  • 배열, 컬렉션에 동일한 연산이 수행되어 일관성 있는 처리 가능
  • 한번 생성하고 사용한 스트림은 재사용 할 수 없음
  • 스트림 연산은 기존 자료를 변경하지 않음
  • 중간 연산과 최종 연산으로 구분 됨
  • 최종 연산이 수행되어야 모든 연산이 적용되는 지연 연산

스트림 연산 - 중간 연산

  • 중간 연산 - filter(), map()
  • 조건에 맞는 요소를 추출 (filter()) 하거나 요소를 변환함 (map())

 

문자열의 길이가 5 이상인 요소만 출력하기

sList.stream().filter(s -> s.length() >= 5).forEach(s -> System.out.println(s));

 스트림 생성.                      중간연산.                                 최종연산

 

고객 클래스에서 고객 이름만 가져오기

customerList.stream().map(c -> c.getName()).forEach(s -> System.out.println(s));

            스트림 생성.                 중간 연산.                                최종 연산

 

 

스트림 연산 - 최종 연산

  • 스트림의 자료를 소모 하면서 연산을 수행
  • 최종 연산 후에 스트림은 더 이상 다른 연산을 적용할 수 없음.
  • forEach(): 요소를 하나씩 꺼내 옴
  • count(): 요소의 개수
  • sum(): 요소의 합
  • 이 외도 여러가지 최종 연산이 있음

 

배열 스트림

 

컬렉션 스트림

reduce() 연산

  • 정의된 연산이 아닌 프로그래머가 직접 지정하는 연산을 적용
  • 최종 연산으로 스트림의 요소를 소모하며 연산 수행
  • 배열의 모든 요소의 합을 구하는 reduce() 연산

Arrays.stream(arr).reduce(0, (a, b) -> a + b));

  • 초깃 값 = 0
  • (a, b) = 전달되는 요소
  • (a, b) -> a + b) = 각 요소가 수행해야 할 기능

두 번째 요소로 전달되는 람다식에 따라 다양한 기능을 수행

 

예시들)

 

 

스트림 더보기

stream API matching method

 

stream API matching method

stream API는 특정 조건을 만족하는 요소들을 얻을 수 있도록 세가지 매칭 매소드를 제공한다. allMatch() -> 요소들이 매개값으로 주어진 조건에 맞는지 검사 /** * 이 스트림의 어떤 요소도 제공된 술

junghyungil.tistory.com

stream method 정리

 

stream method 정리

스트림에 관한 모든 메서드 정리입니다.

junghyungil.tistory.com

 

728x90
반응형

'Java' 카테고리의 다른 글

[Java] stream API matching method  (0) 2020.10.18
[Java] 자바8 Optional 기초  (0) 2020.10.13
[Java] 자바8 람다식 기초  (0) 2020.10.07
[Java] 재귀호출 구현 연습 및 코드 설명  (0) 2020.09.12
[Java] Garbage collection (2)  (0) 2020.09.12
Comments