Stream 치팅시트

최창효·2023년 10월 23일
0
post-thumbnail
post-custom-banner

함수형 인터페이스

공식문서 : https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

함수 형식추상 메서드설명디폴트 메서드
Predicateboolean test(T t)T 타입 인수를 받아 Boolean 값을 반환한다and, or, negate
BiPredicate<T, U>boolean test(T t, U u)T 타입 인수와 U 타입 인수를 받아 Boolean 값을 반환한다and, or, negate
Consumervoid accept(T t)T 타입 인수를 받아 결과를 반환하지 않는다andThen
SupplierT get()인수를 받지 않고 T 값을 반환한다
Function<T, R>R apply(T t)T 타입 인수를 받아 R 값을 반환한다andThen, compose
BiFunction<T, U, R>R apply(T t, U u)T 타입 인수와 U 타입 인수를 받아 R 값을 반환한다
BinaryOperatorT apply(T t, T u)T 타입 인수를 두 개를 받아 연산을 실행하고 T 타입의 결과값을 반환한다maBy, minBy

스트림

중간 연산과 최종 연산 정리

연산형식반환 형식사용된 함수형 인터페이스 형식함수 디스크립터
filter중간 연산StreamPredicateT → boolean
distinct중간 연산 (상태 있는 언바운드)Stream
takeWhile중간 연산StreamPredicateT → boolean
dropWhile중간 연산StreamPredicateT → boolean
skip중간 연산 (상태 있는 바운드)Streamlong
limit중간 연산 (상태 있는 바운드)Streamlong
map중간 연산StreamFunction<T,R>T → R
flatMap중간 연산StreamFunction<T,Stream>T → Stream
sorted중간 연산 (상태 있는 언바운드)StreamComparator(T,T) → int
peek중간 연산StreamConsumerT → void
anyMatch최종 연산booleanPredicateT → boolean
noneMatch최종 연산booleanPredicateT → boolean
allMatch최종 연산booleanPredicateT → boolean
findAny최종 연산Optional
findFirst최종 연산Optional
forEach최종 연산voidConsumerT → void
collect최종 연산RCollector<T,A,R>
reduce최종 연산 (상태 있는 바운드)OptionalBinaryOperator(T,T) → T
count최종 연산long

Collectors 클래스의 정적 팩토리 메서드

팩토리 메서드반환 형식사용 예제
toListList스트림의 모든 항목을 리스트로 수집
toSetSet스트림의 모든 항목을 중복이 없는 집합으로 수집
toCollectionCollection스트림의 모든 항목을 발행자가 제공하는 컬렉션으로 수집
countingLong스트림의 항목 수 계산
summingIntInteger스트림의 항목에서 정수 프로퍼티값을 더함
averagingIntDouble스트림 항목의 정수 프로퍼티의 평균값 계산
summarizingIntIntSummaryStatistics스트림 내 항목의 최댓값,최솟값,합계,평균 등의 정수 정보 통계 수집
joiningString스트림의 각 항목에 toString메서드를 호출한 결과 문자열 연결
maxByOptional주어진 비교자를 이용해 스트림의 최댓값 요소를 Optional로 감싼 값을 반환. 스트림에 요소가 없을 때는 Optional.empty()반환
minByOptional주어진 비교자를 이용해 스트림의 최솟값 요소를 Optional로 감싼 값을 반환. 스트림에 요소가 없을 때는 Optional.empty()반환
reducingThe type produced by the reduction operation누적자를 초깃값으로 설정한 다음 BinaryOperator로 스트림의 각 요소를 반복적으로 누적자와 합쳐 스트림을 하나의 값으로 리듀싱
collectingAndThenThe type produced by the reduction operation다른 컬렉터를 감싸고 그 결과에 변환 함수 적용
groupingByMap<K, List>하나의 프로퍼티값을 기준으로 스트림의 항목을 그룹화하며 기준 프로퍼티값을 결과 맵의 키로 사용
partitioningByMap<Boolean, List>프레디케이트를 스트림의 각 항목에 적용한 결과로 항목 분할

Optional클래스의 메서드

메서드설명
empty빈 Optional 인스턴스 반환
filter값이 존재하며 Predicate와 일치하면 값을 포함하는 Optional반환, 값이 없거나 Predicate와 일치하지 않으면 빈 Optional반환
flatMapMap결과의 자료형을 하나 벗겨낸 결과값 반환
get값이 존재하면 Optional이 감싸고 있는 값을 반환, 값이 없으면 NoSuchElementException발생
ifPresent값이 존재하면 지정된 Consumer를 실행하고, 값이 없으면 아무 일도 일어나지 않음
ifPresentOrElse값이 존재하면 지정된 Consumer를 실행하고, 값이 없으면 아무 일도 일어나지 않음
isPresent값이 존재하면 true를 반환하고, 값이 없으면 false를 반환함
map값이 존재하면 제공된 매핑 함수를 적용함
of값이 존재하면 값을 감싸는 Optional을 반환, 값이 null이면 NullPointerException을 발생
ofNullable값이 존재하면 값을 감싸는 Optional을 반환, 값이 null이면 Optional을 반환
or값이 존재하면 같은 Optional을 반환, 값이 없으면 Supplier에서 만든 Optional을 반환
orElse값이 존재하면 값을 반환, 값이 없으면 기본값을 반환함
orElseGet값이 존재하면 값을 반환, 값이 없으면 Supplier에서 제공하는 값을 반환함
orElseThrow값이 존재하면 값을 반환, 값이 없으면 Supplier에서 생성한 예외 발생
stream값이 존재하면 존재하는 값만 포함하는 스트림을 반환,값이 없으면 빈 스트림을 반환

출처

profile
기록하고 정리하는 걸 좋아하는 개발자.
post-custom-banner

0개의 댓글