RxJava2 Flowable collect & collectInto
阿新 • • 發佈:2018-12-13
目錄
collect& collectInto介面
collect(Callable<? extends U> initialItemSupplier, BiConsumer<? super U,? superT> collector)
將源Publisher發出的項收集到一個可變資料結構中,並返回發出此結構的Single。 |
|
collect& collectInto圖解
原始碼中指向跟reduce使用同樣的圖解,圖上僅僅是單純的兩者相加,但是這裡BiFunction函式中可以做更多事情,如果call返回的不是數字,是其他的型別,或者可以做減乘除運算,都是可以的。
collect& collectInto測試用例
測試程式碼 @Test public void collect() { Single single = Flowable.just(5, 7, 9).collect(new Callable<Integer>() { @Override public Integer call() throws Exception { return 3; } }, new BiConsumer<Integer, Integer>() { @Override public void accept(Integer v1, Integer v2) throws Exception { //v1是上面call返回的3,v2是衝just中發射的資料 System.out.println("v1:" + v1 + ",v2:" + v2); } }); single.subscribe(new Consumer<Integer>() { @Override public void accept(Integer v3) throws Exception { //v3是上面call返回的3 System.out.println("v3:"+v3); } }); Flowable.just(30, 80, 90).collectInto(10, new BiConsumer<Integer, Integer>() { @Override public void accept(Integer v4, Integer v5) throws Exception { System.out.println("v4:" + v4 + ",v5:" + v5); } }).subscribe(new Consumer<Integer>() { @Override public void accept(Integer v6) throws Exception{ System.out.println("v6:" + v6); } }); } 測試結果: v1:3,v2:5 v1:3,v2:7 v1:3,v2:9 v3:3 v4:10,v5:30 v4:10,v5:80 v4:10,v5:90 v6:10
collect& collectInto測試用例分析
上面同時做了collect& collectInto的測試用例,可以看到,基本上就是第一個引數所生成的值,可以被傳遞到指定指定BiFunciton函式中,在BiFunciton函式中可以做相應的操作,使用場景比較好把握。