У меня есть список повторяющихся элементов, скажут:Rx эквивалент COUNT с GROUP BY?
Observable<String> source = Observable.just("A", "B", "A", "C", "C", "A");
Я хотел бы сгруппировать их по их стоимости вместе с сколько раз они появляются, так что результат будет парой:
{"A", 3}, {"B", 1}, {"C", 2}
основном эквивалент оператора SQL, как SELECT x, COUNT(1) GROUP BY x;
я только так далеко, чтобы назвать GroupBy на них:
source.groupBy(x -> x, x -> 1)
Но это трансформирует поток в GroupedObservables, и я не мог найти хороший пример того, как двигаться дальше с ними. Я пробовал reduce()
, но это не очень хорошо, так как после groupBy()
он хочет уменьшить GroupedObservables, а не элементы внутри каждой группы.
Возможно ли это с помощью GroupedObservables? Возможно ли любой другой способ достичь желаемого результата?
Понимаете ли вы, что если у вас был горячий наблюдаемый или тот, у которого нет сигнала «OnComplete», что вы не можете выполнить это вычисление? – Enigmativity
Нет, я об этом не думал, но, похоже, это понятно, спасибо. На самом деле, у меня есть список, выпущенный как целое, а не элемент по элементу в моем случае (я просто упростил код для вопроса), поэтому, я думаю, это не проблема, верно? –
Да, но если это холодный наблюдаемый, который испускает все его значения, вам может и не понадобиться Rx. Для чего вы пытаетесь это сделать? – Enigmativity