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 상세 설명

좋은 웹페이지 즐겨찾기