我有一个从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是一个很好的平行执行任务的地方。这里的并行性在哪里? –