JDK 도구 류 의 java.util.stream 패키지 의 원본 학습
Stream 은 자바 8 의 하 이 라이트 로 자바.io 가방 의 InputStream 과 OutputStream 과 는 전혀 다른 개념 입 니 다.이 는 StAX 가 XML 에 대한 스 트림 과 달리 Amazon Kinesis 가 빅 데 이 터 를 실시 간 으로 처리 하 는 스 트림 도 아니다.자바 8 의 Stream 은 집합(Collection)대상 의 기능 을 강화 하 는 것 으로 집합 대상 에 대해 각종 매우 편리 하고 효율 적 인 집합 작업(aggregate operation)이나 대량의 데이터 조작(bulk data operation)에 전념 합 니 다.Stream API 는 같은 새로운 Lambda 표현 식 을 통 해 프로 그래 밍 효율 과 프로그램 가 독성 을 크게 향상 시 킵 니 다.이 동시에 직렬 과 병렬 두 가지 모델 을 제공 하여 집합 작업 을 할 수 있 습 니 다.병렬 모드 는 다 중 핵 프로세서 의 장점 을 충분히 이용 하여 fork/join 병렬 방식 으로 작업 과 가속 처리 과정 을 나 눌 수 있 습 니 다.보통 병렬 코드 를 만 드 는 것 은 어렵 고 오류 가 발생 하기 쉽 지만 Stream API 를 사용 하면 다 중 스 레 드 코드 를 만 들 지 않 아 도 고성능 병렬 프로그램 을 편리 하 게 쓸 수 있 습 니 다.그래서 자바 8 에 처음 등장 한 자바 util.stream 은 함수 식 언어+다 핵 시대 의 종합 적 인 영향 을 미 친 결과 물이 다.
소스 코드 분석
의존 관계
luogw@luogw-MacBook-Pro stream$ ag 'import java.util' | awk 'BEGIN{FS=":"} {print $3}' | awk 'BEGIN{FS=" "} {print $2}' | awk 'BEGIN{FS=";"} {print $1}' | sort -u
java.util.AbstractMap
java.util.AbstractSet
java.util.ArrayDeque
java.util.ArrayList
java.util.Arrays
java.util.Collection
java.util.Collections
java.util.Comparator
java.util.Deque
java.util.DoubleSummaryStatistics
java.util.EnumMap
java.util.EnumSet
java.util.HashMap
java.util.HashSet
java.util.IntSummaryStatistics
java.util.Iterator
java.util.LinkedHashSet
java.util.List
java.util.LongSummaryStatistics
java.util.Map
java.util.Objects
java.util.Optional
java.util.OptionalDouble
java.util.OptionalInt
java.util.OptionalLong
java.util.PrimitiveIterator
java.util.Set
java.util.Spliterator
java.util.Spliterators
java.util.StringJoiner
java.util.concurrent.ConcurrentHashMap
java.util.concurrent.ConcurrentMap
java.util.concurrent.CountedCompleter
java.util.concurrent.ForkJoinPool
java.util.concurrent.ForkJoinTask
java.util.concurrent.atomic.AtomicBoolean
java.util.concurrent.atomic.AtomicLong
java.util.concurrent.atomic.AtomicReference
java.util.function.BiConsumer
java.util.function.BiFunction
java.util.function.BinaryOperator
java.util.function.BooleanSupplier
java.util.function.Consumer
java.util.function.DoubleBinaryOperator
java.util.function.DoubleConsumer
java.util.function.DoubleFunction
java.util.function.DoublePredicate
java.util.function.DoubleSupplier
java.util.function.DoubleToIntFunction
java.util.function.DoubleToLongFunction
java.util.function.DoubleUnaryOperator
java.util.function.Function
java.util.function.IntBinaryOperator
java.util.function.IntConsumer
java.util.function.IntFunction
java.util.function.IntPredicate
java.util.function.IntSupplier
java.util.function.IntToDoubleFunction
java.util.function.IntToLongFunction
java.util.function.IntUnaryOperator
java.util.function.LongBinaryOperator
java.util.function.LongConsumer
java.util.function.LongFunction
java.util.function.LongPredicate
java.util.function.LongSupplier
java.util.function.LongToDoubleFunction
java.util.function.LongToIntFunction
java.util.function.LongUnaryOperator
java.util.function.ObjDoubleConsumer
java.util.function.ObjIntConsumer
java.util.function.ObjLongConsumer
java.util.function.Predicate
java.util.function.Supplier
java.util.function.ToDoubleFunction
java.util.function.ToIntFunction
java.util.function.ToLongFunction
java.util.function.UnaryOperator
위 에서 보 듯 이 Stream 패 키 지 는 집합 프레임 워 크 에 의존 하고 프로 그래 밍 패키지(java.util.concurrent),함수 식 인터페이스(java.util.function)를 병행 합 니 다.즉,의존 자의 실현 을 먼저 알 아야 합 니 다!
실현 원리
참고 자료
java.util.stream 라 이브 러 리 소개
자바 8 의 Streams API 상세 설명
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.