android - Observable.groupBy() limit on count of input data? -


i have following 2 classes , function:

public static class shop {     public int id;     public string name;     public list<coordinate> coordinates = new arraylist<>();      @override     public string tostring() {         string str = id + " (" + name + ") [ ";         (coordinate coordinate : coordinates) {             str += (coordinate.tostring() + " ");         }         str += "]";         return str;     } }  public static class coordinate {     public string latitude;     public string longitude;      public coordinate(string latitude, string longitude) {         this.latitude = latitude;         this.longitude = longitude;     }      @override     public string tostring() {         return "{" + latitude + ", " + longitude + "}";     } }  public list<string[]> longtimefunc() {     try {         //simulate load         thread.sleep(1000);     } catch (interruptedexception ignore) {      }     log.d("rx_tag_long_load", thread.currentthread().getname());     return arrays.aslist(             new string[] {"1", "foo", "lat1-1", "long1-1"},             new string[] {"1", "foo", "lat1-2", "long1-2"},             new string[] {"2", "bar", "lat2-1", "long2-1"},             new string[] {"1", "foo", "lat1-3", "long1-3"},             new string[] {"1", "foo", "lat1-4", "long1-4"},             new string[] {"3", "ping", "lat3-1", "long3-1"},             new string[] {"2", "bar", "lat2-2", "long2-2"},             new string[] {"1", "foo", "lat1-5", "long1-5"},             new string[] {"2", "bar", "lat2-3", "long2-3"},             new string[] {"2", "bar", "lat2-4", "long2-4"},             new string[] {"1", "foo", "lat1-6", "long1-6"},             new string[] {"1", "foo", "lat1-7", "long1-7"},             new string[] {"3", "ping", "lat3-2", "long3-2"},             new string[] {"3", "ping", "lat3-3", "long3-3"},             new string[] {"2", "bar", "lat2-5", "long2-5"},             new string[] {"3", "ping", "lat3-4", "long3-4"},             new string[] {"2", "bar", "lat2-6", "long2-6"},             new string[] {"3", "ping", "lat3-5", "long3-5"},             new string[] {"2", "bar", "lat2-7", "long2-7"},             new string[] {"2", "bar", "lat2-8", "long2-8"},             new string[] {"3", "ping", "lat3-6", "long3-6"},             new string[] {"2", "bar", "lat2-9", "long2-9"},             new string[] {"3", "ping", "lat3-7", "long3-7"},             new string[] {"2", "bar", "lat2-10", "long2-10"},             new string[] {"2", "bar", "lat2-11", "long2-11"},              new string[] {"4", "dev", "lat4-1", "long4-1"},             new string[] {"4", "dev", "lat4-2", "long4-2"},             new string[] {"4", "dev", "lat4-3", "long4-3"},             new string[] {"4", "dev", "lat4-4", "long4-4"},             new string[] {"4", "dev", "lat4-5", "long4-5"}     ); } 

i want group source first element of each row , collect them list<shop>:

   observable             .defer(() -> observable.from(longtimefunc()))             .doonnext(strings -> log.d("rx_tag_first", arrays.tostring(strings)))             .groupby(rows -> rows[0])             .doonnext(groupedobservable -> log.d("rx_tag_two", groupedobservable.getkey()))             .concatmap(group -> group.collect(shop::new, (shop, rows) -> {                 shop.id = integer.parseint(rows[0]);                 shop.name = rows[1];                 shop.coordinates.add(new coordinate(rows[2], rows[3]));             }))             .doonnext(shop -> log.d("rx_tag_three", string.valueof(shop)))             .tolist()             .doonnext(shops -> log.d("rx_tag_four", thread.currentthread().getname()))             .subscribeon(schedulers.newthread())             .observeon(androidschedulers.mainthread())             .subscribe(shops -> log.d("rx_tag_subscribe", string.valueof(shops)));     log.d("rx_tag", "after subscribe"); 

the output looks (notice absence of rx_tag_subscribe log record , of elements @ end):

rx_tag: after subscribe rx_tag_long_load: rxnewthreadscheduler-1 rx_tag_first: [1, foo, lat1-1, long1-1] rx_tag_two: 1 rx_tag_first: [1, foo, lat1-2, long1-2] rx_tag_first: [2, bar, lat2-1, long2-1] rx_tag_two: 2 rx_tag_first: [1, foo, lat1-3, long1-3] rx_tag_first: [1, foo, lat1-4, long1-4] rx_tag_first: [3, ping, lat3-1, long3-1] rx_tag_two: 3 rx_tag_first: [2, bar, lat2-2, long2-2] rx_tag_first: [1, foo, lat1-5, long1-5] rx_tag_first: [2, bar, lat2-3, long2-3] rx_tag_first: [2, bar, lat2-4, long2-4] rx_tag_first: [1, foo, lat1-6, long1-6] rx_tag_first: [1, foo, lat1-7, long1-7] rx_tag_first: [3, ping, lat3-2, long3-2] rx_tag_first: [3, ping, lat3-3, long3-3] rx_tag_first: [2, bar, lat2-5, long2-5] rx_tag_first: [3, ping, lat3-4, long3-4] rx_tag_first: [2, bar, lat2-6, long2-6] rx_tag_first: [3, ping, lat3-5, long3-5] rx_tag_first: [2, bar, lat2-7, long2-7] rx_tag_first: [2, bar, lat2-8, long2-8] rx_tag_first: [3, ping, lat3-6, long3-6] rx_tag_first: [2, bar, lat2-9, long2-9] rx_tag_first: [3, ping, lat3-7, long3-7] rx_tag_first: [2, bar, lat2-10, long2-10] rx_tag_first: [2, bar, lat2-11, long2-11] rx_tag_first: [4, dev, lat4-1, long4-1] 

i looks operator hangs , waits infinitely source sequence complete. if comment out 4th group in source data works expected , final part of log looks this:

rx_tag_three: 1 (foo) [ {lat1-1, long1-1} {lat1-2, long1-2} {lat1-3, long1-3} {lat1-4, long1-4} {lat1-5, long1-5} {lat1-6, long1-6} {lat1-7, long1-7} ] rx_tag_three: 2 (bar) [ {lat2-1, long2-1} {lat2-2, long2-2} {lat2-3, long2-3} {lat2-4, long2-4} {lat2-5, long2-5} {lat2-6, long2-6} {lat2-7, long2-7} {lat2-8, long2-8} {lat2-9, long2-9} {lat2-10, long2-10} {lat2-11, long2-11} ] rx_tag_three: 3 (ping) [ {lat3-1, long3-1} {lat3-2, long3-2} {lat3-3, long3-3} {lat3-4, long3-4} {lat3-5, long3-5} {lat3-6, long3-6} {lat3-7, long3-7} ] rx_tag_four: rxnewthreadscheduler-1 rx_tag_subscribe: [1 (foo) [ {lat1-1, long1-1} {lat1-2, long1-2} {lat1-3, long1-3} {lat1-4, long1-4} {lat1-5, long1-5} {lat1-6, long1-6} {lat1-7, long1-7} ], 2 (bar) [ {lat2-1, long2-1} {lat2-2, long2-2} {lat2-3, long2-3} {lat2-4, long2-4} {lat2-5, long2-5} {lat2-6, long2-6} {lat2-7, long2-7} {lat2-8, long2-8} {lat2-9, long2-9} {lat2-10, long2-10} {lat2-11, long2-11} ], 3 (ping) [ {lat3-1, long3-1} {lat3-2, long3-2} {lat3-3, long3-3} {lat3-4, long3-4} {lat3-5, long3-5} {lat3-6, long3-6} {lat3-7, long3-7} ]] 

what do wrong?


Comments

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -