take (n) не имеет эффекта после groupBy в RxJava2 - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь сгруппировать несколько экземпляров модели по имени, а затем использовать take (n), чтобы взять только определенные элементы в группу, но каким-то образом дубль не влияет на GroupedObservable.Вот код

Предположим, что он содержит список из 10 элементов, 5 из которых имеют название " apple ", а остальные 5 имеют имя " pear "

Observable<Item> items....

Observable<Item> groupedItems = items.groupBy(Item::name)
.flatMap(it -> it.take(2));

Итак, я думаю, groupedItems должен испускать 2 "яблока" и 2 "груши", но вместо этого у них есть все.

Есть ли что-то, что яЯ ошибаюсь, мне нужно сделать это по-другому?

1 Ответ

0 голосов
/ 01 октября 2018

Отмененные группы воссоздаются при повторном обнаружении того же ключа.Вы должны убедиться, что группа не остановлена, и вам придется каким-то образом игнорировать другие элементы:

source.groupBy(func)
.flatMap(group -> 
    group.publish(p -> p.take(5).mergeWith(p.ignoreElements()))
);
...