본 내용은 필자가 학습한 내용을 정리하는 내용입니다. 대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다! RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에 저자님의 블로그 https://brunch.co.kr/@yudong#info |
filter()함수
filter함수는 Observable에서 원하는 데이터만 걸러내는 역할을 합니다.
즉 필요없는 데이터는 제거하고, 원하는 데이터만 filter()함수를 통과하게 됩니다.
filter()함수의 마블다이어그램
출처 - http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Flowable.html
다이어그램을 보면 오직 동그란 원의 모양만 통과시킵니다.
filter()함수의 활용 예
Objs변수에는 Observable이 발행하는 데이터가 들어있습니다.filter()함수에는 원만 통과시킬수 있게 하므로 실행결과는 아래와 같습니다.
filter() 함수에는 boolean 값을 리턴하는 함수형 인터페이스 인 Predicate를 인자로 넣습니다 |
(map()과 flatMap()함수에서 Function객체를 넣은 것과는 다릅니다.) Predicate는 진위판별 이라는 뜻이 있으며 boolean 값을 리턴하는 특수한 함수형 인터페이스 입니다.
따라서 람다 표현식으로 인자를 넣으면 Function인지 Predicate인지 신경쓰지 않고 동일하게 코딩 할 수있다는 장점이있습니다(판별은 컴파일러가)
앞에서 사용한 람다표현식을 Predicate 타입의 함수로 만들면 아래와 같습니다
filter() 함수를 이용한 짝수 판별 예
source.subscribe(System.out::println);
filter() 함수와 비슷한 함수들
first(default) 함수 : Observable의 첫 번째 값을 필터함. 만약 값없이 완료되면 대신 기본값을 리턴함. |
last( defulat) 함수 : Observable의 마지막 값을 필터함. 만약 값없이 완료되면 대신 기본값을 리턴함. |
take( N) 함수 : 최초 N개 값만 가져옴. |
takeLast( N) 함수 : 마지막 N개의 값만 필터함. |
skip( N) 함수 : 최초 N개 값을 건너뜀. |
skipLast( N) 함수 : 마지막 N개 값을 건너뜀. |
filter() 함수와 비슷한 함수들의 활용 예
source.subscribe(data->System.out.println("skipLast(2) value = "+data));
결과값
skipLast(2) value = 300
'Rx' 카테고리의 다른 글
리액티브연산자 -6(데이터 쿼리하기,map,filter,reduce 함수) (0) | 2018.12.24 |
---|---|
리액티브연산자 -5 (reduce함수) (0) | 2018.12.24 |
리액티브연산자 -2( flatMap함수) (0) | 2018.12.24 |
리액티브연산자 -1( map함수) (0) | 2018.12.24 |
리액티브연산자란? (0) | 2018.12.24 |
댓글