FlatMap итерируемый и объединить его обратно в итерируемый - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть API, который возвращает Single.Это Single содержит список значений, скажем, String значений.Когда я вызываю этот объект, я получаю это Single и должен отфильтровать некоторые значения из него и вернуть еще один Single.Я пытаюсь добиться чего-то вроде этого упрощенного теста:

@Test
public void filterTest() {

    List<String> sourceList = Arrays.asList("email", "phone", "smoke", "email", "phone", "fax", "email");

    Single.just(sourceList)
            .toObservable()
            .flatMap(source -> {
                return Observable.from(source);
            })
            .filter(source -> !source.equals("email"))
            .groupBy(/* criteria? */)
            //how to extract single list from groupBy or 
            //is there another opposite function for flatMap?
            .toSingle()
            .subscribe(s -> System.out.println(s));
}

1 Ответ

0 голосов
/ 24 апреля 2018

Попробуйте это:

Single.just(sourceList)
        .flattenAsObservable(source -> source)
        .filter(source -> !source.equals("email"))
        .toList()
        .subscribe(s -> System.out.println(s));

или

 Observable.fromIterable(sourceList)
        .filter(source -> !source.equals("email"))
        .toList()
        .subscribe(s -> System.out.println(s));
...