2017-05-06 8 views
1

일부 숫자를 방출하는 Observables가 있으며 단순히 마지막 N 개의 요소를 가져 가고 싶습니다. (단순히 RxJava에 대한 래퍼입니다 내가 RxKotlin을 사용하고 있습니다)RxJava2에서 관측 가능한 N 개의 마지막 객체 가져 오기

나는 다음 한 코드 : I 가까이 버퍼 연산자의 반환, 나는 이것을보고 어떤 모습으로

val list = listOf(1,2,3,4,5,6,7,8,9,10) 
Observable.fromIterable(list) 
      .buffer(3, 1) 
      .lastOrError() 
      .subscribe{value -> println(value)} 

불행히도 결과는, [10]입니다 :

[1, 2, 3] 
[2, 3, 4] 
[3, 4, 5] 
[4, 5, 6] 
[5, 6, 7] 
[6, 7, 8] 
[7, 8, 9] 
[8, 9, 10] 
[9, 10] 
[10] 

마지막으로 "전체"버퍼를 얻을 수있는 방법이있다 ->[8, 9, 10]은? RxJava에서

답변

4

, 많은 사업자가 동일한 작업의 공용 언어 표현과 일치하는 이름이 : + 마지막 N을 ->takeLast(int n) :

Observable.range(1, 10) 
    .takeLast(3) 
    .toList() // <-- in case you want it as a list 
    .subscribe(System.out::println);