RxJava разделить список на разделы - PullRequest
0 голосов
/ 17 мая 2018

как создать списки из большого списка

окно:

Observable.just(mutableListOf(1,2,3,4,5,6))
                .window(2)
                .flatMap { chunk -> chunk }
                .map { chunk -> println("This is a chunk of 2 numbers -> ${chunk}") }
                .subscribe()

результат This is a chunk of 2 numbers -> [1, 2, 3, 4, 5, 6]

почему? я имею в виду, почему бы не печатать 3 раза (3 списка, содержащие по 2 цифры каждый)

и для буфера

Observable.just(mutableListOf(1,2,3,4,5,6))
                .buffer(2)
                .flatMap { chunk -> Observable.just(chunk) }
                .map { chunk -> println("This is a chunk of 2 numbers -> ${chunk}") }
                .subscribe()

результат буфера -> This is a chunk of 2 numbers -> [[1, 2, 3, 4, 5, 6]]

этот почти что сделал, кроме части создания большего количества списков для группы из 2 чисел: O = (

немного света?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Это можно сделать с помощью Rxjava2 Buffer

  • Buffer -> периодически собирать предметы, испускаемые Обсерваторией, в связки и испускать эти связки вместо того, чтобы испускать предметы по одному

Вот код для его получения.

Observable.fromIterable(mutableListOf(1,2,3,4,5,6))
        .buffer(2, 2) 
        // First param: 2 means,  it takes max of 2 from its start index and create list 
        // seconds param 2 means, it jumps two step every time
        .map { chunk -> println("This is a chunk of 2 numbers -> ${chunk}") }
        .subscribe()

На выполнение вышеприведенного кода выдает 3 списка. Каждый список содержит 2 элемента.

Это кусок из 2 чисел -> {1, 2}

Это кусок из 2 чисел -> {3, 4}

Это кусок из 2 чисел -> {5, 6}

0 голосов
/ 19 мая 2018

Observable.just дает вам поток одного элемента (список). Вы должны использовать Observable.from.

...