본문 바로가기

Rx

RxKotlin- Part 8-2. 필터 연산자 : filter(), take(), skip(), distinct()

728x90

filter()

filter() 함수는 Observable에서 필요없는 데이터는 제거하고, 원하는 데이터만 filter()를 통해 걸러집니다.

 

fun main() {
    val arr = arrayOf(1, 2, 3, 4, 5)
    val ob = Observable.fromArray(*arr)
        .filter{
            it > 3
        }

    ob.subscribe(System.out::println)
}

실행결과 : 

4
5

 

take()

첫번째부터 i번째 데이터를 Observer에게 보냅니다.

fun main() {
    val arr = arrayOf(1, 2, 3, 4, 5)
    val ob = Observable.fromArray(*arr)
        .take(3)

    ob.subscribe(System.out::println)
}

실행결과 : 

1
2
3

 

skip(), skipLast()

skip() 함수는 첫번째부터 i번째 데이터를 생략하고 Observer에게 보냅니다.

skipLast() 함수는 마지막부터 뒤에서 i번째 데이터를 생략하고 Observer에게 보냅니다.

fun main() {
    val arr = arrayOf(1, 2, 3, 4, 5)
    val ob = Observable.fromArray(*arr)
        .skip(2)

    ob.subscribe(System.out::println)
}

실행결과 : 

3
4
5

 

distinct()

데이터의 중복을 제거해줍니다.

fun main() {
    val arr = arrayOf(1, 2, 3, 4, 5, 2, 3)
    val ob = Observable.fromArray(*arr)
        .distinct()

    ob.subscribe(System.out::println)
}

실행결과 :

1
2
3
4
5