Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Java
- 완주하지못한선수
- 셀레니움
- streamlit
- 머신러닝
- 컬렉션 프레임웍
- 스프링 부트
- h2 데이타베이스
- 프로그래머스
- 스프링 부트3
- 자바 열거형
- 오라클
- oracle
- 자바 로그 레벨
- 사이킷런
- 컬렉션 인터페이스
- WinError5
- REST API
- URI 원칙
- GIT
- 파이썬
- 알고리즘
- conda remove
- 차원증가
- 쓰레드 풀
- db
- Python
- 사이킷런 회귀
- Selenium
- openai
Archives
- Today
- Total
노트 :
스트림(Stream) 본문
1. 스트림: 데이터소스를 추상화하여 자료의 대상에 관계없이 같은 방식으로 연산을 수행할 수 있도록 함
2. 스트림 사용의 장점
1) 연산의 추상화: 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방식으로 처리 가능
2) 코드의 재사용성 증가. 단 스트림 자체는 일회용임
3. 스트림 생성
① String[] strArr = {"Amy", "Bella", "Chris"};
=> Stream<String> stream1 = Arrays.stream(strArr);
=========================================
② List<String> strList = Arrays.asList(strArr);
=> Stream<String> stream2 = strList.stream();
4. 스트림의 특징
1) 일회용: 생성한 스트림은 한번 사용하면 닫혀서 다시 사용할 수 없음. 필요시 재성성
int[] arr = {1, 2, 3, 4, 5};
① Arrays.stream(arr).forEach(n->System.out.print(n); // 생성한 스트림 사용
② System.out.print(Arrays.stream(arr).sum()); // 필요시 재생성
2) 중간연산과 최종연산
* 중간연산: 연산 결과가 스트림인 연산. 스트림에 연속해서 중간연산할 수 있음
* 최종연산: 연산 결과가 스트림이 아닌 연산. 스트림의 요소를 소모하므로 단 한번만 가능
ㆍ 지연된 연산: 최종연산이 수행되기 전까지는 중간연산이 수행되지 않음. 중간연산을 호출하는 것은 연산을 지정해주는 것일 뿐 최종연산이 수행되어야지 비로소 스트림의 요소들이 중간연산을 거쳐 최종연산에서 소모됨
List<String> strList = new ArrayList<>();
strList.add("Amy");
strList.add("Bella");
strList.add("Chris");
Stream<String> strStream = strList.stream();
strStream.sorted().forEach(s->System.out.print(s));
// sorted(): 중간연산 -> 정렬
// forEach(s->System.out.print(s)): 최종연산 ->객체를 순회하여 요소를 출력
5. 스트림의 연산 목록
1) 중간연산 목록
중간연산 | 설명 |
ㆍStream<T> distinct () | 중복을 제거 |
ㆍ Strema<T> filter (Predicate<T> predicate) | 조건에 안 맞는 요소 제외 |
ㆍ Stream<T> limit (long maxSize) | 스트림의 일부를 잘라낸다. |
ㆍ Stream<T> skip (long n) | 스트림의 일부를 건너뛴다. |
ㆍ Stream<T> peek (Consumer<T> action) | 스트림의 요소에 작업수행 |
ㆍ Stream<T> sorted() ㆍ Stream<T> sorted(Comparator<T> comparator) |
스트림의 요소를 정렬한다. |
ㆍ Stream<R> map (Function<T,R> mapper) ㆍ DoubleStream mapToDouble (ToDoubleFunction<T> mapper) ㆍ IntStream mapToInt (ToIntFunction<T> mapper) ㆍ LongStream mapToLong (ToLongFunction<T> mapper) ㆍ Stream<R> flatMap (Function<T, Stream<R>> mapper) ㆍ DoubleStream flatMapToDouble (Function<T, DoubleStream> m) ㆍ IntStream flatMapToInt (Function<T, IntStream> m) ㆍ LongStream flatMapToLong (Function<T, LongStream> m) |
스트림의 요소를 변환한다. |
2) 최종연산 목록
최종연산 | 설명 |
ㆍ void forEach (Consumer<? super T> action) ㆍ void forEachOrdered (Consumer<? super T> action) |
각 요소에 지정된 작업을 수행 |
ㆍ long count () | 스트림의 요소의 개수 반환 |
ㆍ Optional<T> max (Comparator<? super T> comparator) ㆍ Optional<T> min (Comparator<? super T> comparator) |
스트림의 최대값/최소값 반환 |
ㆍ boolean allMatch (Predicate<T> p) // 모두 만족하는지 여부 ㆍ boolean anyMatch (Predicate<T> p) // 하나라도 만족하는지 여부 ㆍ boolean nonMatch (Predicate<T> p) // 모두 만족하지 않는지 여부 |
주어진 조건을 모든 요소가 만족시키는지, 만족시키지 않는지 확인 |
ㆍ Object[] toArray() ㆍ A[] toArray (IntFunction<A[]> generator) |
스트림의 모든 요소를 배열로 반환 |
ㆍ Optional<T> reduce (BinaryOperator<T> accumulator) ㆍ T reduce (T identity, BinaryOperator<T> accumfulator) ㆍ U reduce (U identity, BiFunction<U,T,U> accumulator,BinaryOperator<U> combiner) |
스트림의 요소를 하나씩 줄여가면서 계산한다. |
ㆍ R collect (Collector<T,A,R> collector) ㆍ R collect (Supplier<R> supplier, BiConsumer<R,T> accumulator,BiConsumer<R,R> combiner) |
스트림의 요소를 수집한다. 주로 요소를 그룹화하거나 분할한 결과를 컬렉션에 담아 반환하는데 사용된다. |
참고: 자바의 정석(3rd Edition), 남궁 성 저, 도우출판
'JAVA' 카테고리의 다른 글
[spring] 스프링 부트 3.x 버전 데이터베이스 설정(application.yml) (2) | 2024.01.03 |
---|---|
[Servlet] 서블릿 컨테이너 (2) | 2024.01.02 |
자바 로그 레벨(log) (0) | 2023.12.26 |
열거형(enum) (2) | 2023.12.26 |
컬렉션 프레임웍(Collections Framework) (0) | 2023.12.24 |