📝RxJava의 학습 순서
1. Observable 클래스를 명확하게 이해(특히 Hot Observable과 Cold Observable의 개념을 꼭 이해해야함)
2. 변환, 제어, 결합 연산자 등 카테고리별 주요 함수 공부
3. 스케줄러의 의미, subscribeOn()과 observeOn()함수의 차이
4. 그 밖의 디버깅, 흐름 제어함수
RxJava에서 제어 연산자란 입력 데이터 중 원하는 데이터를 골라내는 함수이다.
filter(), first(), take() 등이 있다.
filter는 Observable에서 원하는 데이터만 걸러내는 역할을 한다. 즉, 필요없는 데이터는 제거하고, 원하는 데이터만 filter()함수를 통과하게 된다.
objs변수에는 Observable이 발행하는 데이터가 들어가있다. filter()함수에는 짝수를 판별하는 Predicate타입의 함수로 만들어 넣어준다.
filter함수 안에는 Predicate(boolean 값을 리턴하는 함수형 인터페이스)를 인자로 넣는다.
Integer[] nums = {10,15,76,38,29
Observable.fromArray(nums)
.filter(num->num%2==0)
.subscribe(System.out::println);
10
76
38
Integer[] nums= {100,200,300,400,500};
Single<Integer> single;
Observable<Integer> source;
single = Observable.fromArray(nums).first(-1);
single.subscribe(data -> System.out.println("first() value = "+data));
single = Observable.fromArray(nums).last(999);
single.subscribe(data -> System.out.println("last() value = "+data));
source = Observable.fromArray(nums).take(3);
source.subscribe(data -> System.out.println("take(3) value = "+data));
source = Observable.fromArray(nums).takeLast(3);
source.subscribe(data -> System.out.println("takeLast(3) value = "+data));
source = Observable.fromArray(nums).skip(2);
source.subscribe(data -> System.out.println("skip(2) value = "+data));
source = Observable.fromArray(nums).skipLast(2);
source.subscribe(data -> System.out.println("skipLast(2) value = "+data));
first() value = 100
last() value = 500
take(3) value = 100
take(3) value = 200
take(3) value = 300
takeLast(3) value = 300
takeLast(3) value = 400
takeLast(3) value = 500
skip(2) value = 300
skip(2) value = 400
skip(2) value = 500
skipLast(2) value = 100
skipLast(2) value = 200
skipLast(2) value = 300