우주에서 글을 적어본다
[JAVA] Stream 본문
스프링부트로 프로젝트를 진행하는 던 중 리스트를 처리할 때 Stream을 사용하는 것을 많이 보았다.
학교에서는 iterator만 배워서 잘 몰랐는데 이번 기회에 공부해 보려고 한다.
양이 많아서 여기에 정리는 간단하게 할 것이고 그 외는 아래 주소에서 확인하면 된다.
https://futurecreator.github.io/2018/08/26/java-8-streams/
Stream
- Java 8부터 지원하기 시작함
- elements를 하나씩 순회하며 처리함
- 람다식을 사용하여 간결하게 작성 가능
검색해 본 결과 스트림의 가장 큰 특징은 위의 세 개이다.
사용법
- 스트림 객체 생성
- 중간작업 - 가공하기
- 최종작업 - 결과 만들기
1. 스트림 객체 생성
배열, 컬렉션, 비어있는 스트림 등을 생성할 수 있다.
2. 중간작업 - 가공하기
자신이 원하는 데이터만 뽑아 사용할 수 있고 여러 작업은 이어 붙일 수 있다.
대표적인 수행들만 나열하겠다.
- filter(): 스트림 내 요소들을 하나씩 평가해서 걸러내는 작업
- map(): 스트림 내 요소들을 하나씩 특정 값으로 변환
- sorted()
3. 최종작업 - 결과 만들기
- Calculating
- sum()
- count()
- min()
- max()
- Collecting
- Collectors.toList(): 리스트로 반환
- Collectors.joining(): 작업한 결과를 하나의 스트링으로 반환
- Collectors.of(): 필요한 로직이 있을 때 직접 만듦
- Matching
- anyMatch(): 하나라도 조건을 만족하는 요소가 있는지
- allMatch(): 모든 조건을 만족하는 요소가 있는지
- noneMatch(): 모든 조건을 만족하지 않는 요소가 있는지
이 외에도 더 많은 기능이 있으니 필요 시 공부해 나가야 겠다.