java - 在 Reactive X Java 中转换可观察的集合

标签 java reactive-programming rx-java

我有一段代码,它使用 ReactiveX 的几个映射语句将 List[VideoDetails] block 转换为 VideoGrid :

feedService.loadVideoDetailsFeed(things)
            .map(new Func1<List<VideoDetails>, List<Video>>() {
                @Override
                public List<Video> call(List<VideoDetails> details) {
                    return Lists.transform(details, new Function<VideoDetails, Video>() {
                        @Override
                        public Video apply(VideoDetails input) {
                            return input.getVideo();
                        }
                    });
                }
            })
            .map(new Func1<List<Video>, VideoGrid>() {
                @Override
                public VideoGrid call(List<Video> videos) {
                    //stuff
                }
            })

如您所见,我在其中一个映射语句中使用 Guava 转换从列表 [VideoDetails] 到列表 [Video]。我认为通过 ReactiveX 有更好的方法来完成这种转变吗?我正在浏览transforming section文档,但我可能对 ReactiveX 太陌生,不知道在这里使用什么。

上面的代码片段有效,如果可能的话,我宁愿以正确的方式执行它。

最佳答案

保持 rx 风格,您可以使用下面的示例:

编辑

feedService.loadVideoDetailsFeed(things)
        .flatMap(new Func1<List<VideoDetails>, Observable<Video>>() {
            @Override
            public Observable<Video> call(List<VideoDetails> videoDetailsList) {
                return Observable.from(videoDetailsList).map(new Func1<VideoDetails, Video>() {
                    @Override
                    public Video call(VideoDetails videoDetails) {
                        return videoDetails.getVideo();
                    }
                });
            }
        })
        .toList();

关于java - 在 Reactive X Java 中转换可观察的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417827/

相关文章:

java - 使用 ReactiveCouchbaseRepository 时出现 IllegalArgumentException 期望找到类 rxSingle 的响应式(Reactive)适配器,但无法找到

c# - 如何使用Observables实现轮询?

android - RxJava2,如何组合多观察结果?

java - jsf中的网页认证

java - 通过 Spring Reactor 从 Future 创建 HotStream

asynchronous - 发生某些情况时如何停止 Kotlin 流程

java - 快速覆盖方法

java - 如何在android上正确使用mvc?

java - 为什么第二个代码比第一个更有效?

java - RTF Java 解析器