rx java - Collect grouped observables' emissions into one list -


i have following use case (this of course contrived example, once know answer, able port real problem solve):

  1. get list of integers.
  2. group them result of % 4 operation
  3. collect each group's elements lists
  4. ignore groups/lists have fewer elements 3 elements
  5. emit single list, elements lists created in step #3

here current code:

    observable             .from(arrays.aslist(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12))             .groupby(item -> item % 4)             .subscribe(groupedobservable -> {                 groupedobservable                         .tolist()                         .filter(list -> list.size() > 2)                         .subscribe(result -> {                             system.out.printf("%d results %s%n", result.size(), result);                         });             }); 

and output is:

4 results [0, 4, 8, 12] 3 results [2, 6, 10] 3 results [3, 7, 11] 

so prints out how many elements each group has , list of elements. output (i don't care keys):

3 results: [[0, 4, 8, 12], [2, 6, 10], [3, 7, 11]]

i.e. somehow flatten grouped observables 1 list. fail so. example, adding .flatmap(integers -> observable.just(integers)) after filter doesn't change anything, influences each grouped observable, not whole stream. there way fulfill requirements?

i'm not sure if i've understood correctly, based on desired output here code might looking for:

public static void main(final string[] args) throws exception {     observable.from(arrays.aslist(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12))             .groupby(item -> item % 4)             .flatmap(observable::tolist)             .filter(integers -> integers.size() > 2)             .tolist()             .subscribe(result -> {                 system.out.printf("%d results %s%n", result.size(), result);             }); } 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -