일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 토비의 스프링 정리
- GC
- 자바 ORM 표준 JPA 프로그래밍
- Stack
- thread
- 쿠버네티스
- redis
- IntellJ
- Real MySQL
- jvm
- Stream
- OS
- 스프링
- JPA
- 이스티오
- gradle
- Java
- 스트림
- 토비의 스프링
- MSA
- Kotlin
- 자바
- 백준
- K8s
- list
- 보조스트림
- SpringBoot
- spring
- Collection
- mysql
Archives
- Today
- Total
인생을 코딩하다.
[Java] 자바8 스트림(Stream) 본문
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) = 각 요소가 수행해야 할 기능
두 번째 요소로 전달되는 람다식에 따라 다양한 기능을 수행
예시들)
스트림 더보기
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