我有一個從REST端點返回的列表。我需要將該列表分解成多個類別(類別是列表中每個條目的一個項目)。個別類別將被寫入緩存,以便稍後進行更快速的查找。rxJava轉換列表到地圖
我不知道如果我能.MAP()中的條目,並提供多種過濾器()或某些類型的case語句把類別條目在正確的桶。
請問像這樣的聲音合理與rxJava實現?
UPDATE: 非工作版本
private Map<String, List<VideoMetadataInfoEntity>> buildCategories(Observable<List<VideoMetadataInfoEntity>> videoList) {
Map<String, List<VideoMetadataInfoEntity>> categoryMap = new HashMap<>();
videoList
.flatMap(Observable::from)
.subscribe(videoMetadataInfoEntity -> mapCategory(videoMetadataInfoEntity, categoryMap));
Observable.just(categoryMap)
.doOnNext(saveCategoriesToCacheAction);
return categoryMap;
}
這些火順序,但是,這是我的理解,因爲它未簽約的結果,第二觀察到的不發送任何東西saveCategoriesToCacheAction第一個可觀察到的。
我開始覺得我應該修改我的緩存策略。該列表將始終具有所有的細節。該服務不會爲我提供可用於上市的子集,然後再調用以獲取完整詳細信息。這是一個項目的完整列表或全部細節。這可能是一種更好的方法,可以將每個緩存分別緩存到他們自己的分類緩存中。我正在嘗試執行映射,以便此網絡調用可以返回所請求的類別,但隨後的調用將來自緩存,直到緩存過期並且新的網絡調用刷新爲止。
rx是一個很好的平行執行任務的地方。這裏的並行性在哪裏? –