JAVA의 Stream API는 데이터 처리 작업을 간결하고 효율적으로 수행할 수 있도록 다양한 메소드를 제공한다.
중간 연산 (InterMediate Operations)
중간 연산은 스트림을 반환하는 연산으로, 여러 번 체이닝(연결)할 수 있다. 이 연산들을 최종 연산이 호출될 떄까지 실제로 수행되지 않는다.
filter(Predicate<? super T> predicate)
// 조건에 맞는 요소들만을 포함하는 새로운 스트림을 반환함
map(Function<? super T, ? extends R> mapper)
// 각 요소에 함수가 적용된 결과로 구성된 새로운 스트림을 반환
// 파이썬의 apply와 비슷한듯
distinct()
// 중복 요소를 제거한 스트림을 반환
sorted()
// 요소들을 정렬한 스트림을반환
flatMap(Fuction<? super T, ? extends Stream<? extends R>> mapper)
// 각 요소를 매핑한 결과 스트림을 하나의 스트림으로 평탄화 (flatten)해서 반환함
limit(long maxSize)
// 스트림의 크기를 지정된 수로 제한함
skip(long n)
// 처음 n개의 요소를 건너뛰고 나머지 요소들로 구성된 스트림을 반환함
최종 연산 (Terminal Opertaions)
최종 연산은 스트림을 소모하고, 결과를 반환하는 연산.
이 연산이 호출되면 스트림의 모든 중간 연산이 실행된다.
forEach(Consumer<? super T> action)
// 각 요소에 대해 지정된 작업을 수행함
collect(Collector<? super T, A, R) collector)
// 스트림의 요소들을 수집하여 결과를 반환함
// ex) 리스트, set 등
// T : 스트림의 요소 타입, A : 중간 집계 타입, R : 최종 결과 타입
reduce(BinaryOperator<T> accmulaotr)
// 스트림의 요소들을 누적하여 단일 결과를 반환함
count()
// 스트림의 요소 개수를 반환함
min(Comparrator<? super T> comparator)
// 최소값을 찾고, 그 값을 Optional로 반환함
max(Comparator<? super T> comparator)
// 최대값을 찾고, 그값을 Optional로 반환함
anyMatch(Predicate<? super T> predicate)
// 하나라도 조건에 맞는 요소가 있으면 true를 반환함
allMatch(Predicate<? super T> predicate)
// 모든 요소가 조건에 맞아야 true를 반환함
noneMatch(Predicate<? super T> predicate)
// 모든 요소가 조건에 맞지 않으면 true를 반환
toArray()
// 스트림의 모든 요소를 배열로 반환
스트림 생성 메소드
stream()
// 컬렉션이나 배열에서 스트림을생성함
IntStream.range(int startInclusive, int endExclusive)
// 주어진 범위의 정수로 구성된 스트림을 생성함
'java' 카테고리의 다른 글
Runnable과 Thread의 차이점 (0) | 2024.09.05 |
---|---|
TimeOut을 사용하는 대표적인 상황 몇가지 (0) | 2024.08.27 |
서블릿의 메소드와 핸들러,JUnit 개념 정리 (0) | 2024.07.26 |
디자인패턴 사용처 컨닝페이퍼 (0) | 2024.07.24 |
전략, 옵저버, 팩토리메소드, 데코레이터, 템플릿, 데코레이터 패턴 (2) | 2024.07.24 |