首页 > 解决方案 > 混合 Java 流 + Rxjava 是否安全

问题描述

假设我有一个可观察的并且在下游某处我选择使用 java 8 流而不是使用 rxjava 运算符进行过滤。这会导致任何问题吗?

 List<String> stringList = new ArrayList<>();
    Observable.just(stringList)
            .map(new Function<List<String>, List<String>>() {
                @Override
                public List<String> apply(List<String> strings) throws Exception {
                    return strings.stream().filter(it -> it.contains("randomText"))
                            .collect(Collectors.toList());
                }
            }).subscribe(new Consumer<List<String>>() {
        @Override
        public void accept(List<String> strings) throws Exception {
            //do something with list
        }
    });

标签: javajava-streamrx-javareactive-programmingrx-java2

解决方案


Consumer<T>接受T,因此您可以使用 提供的所有方法T

无论如何检查文档,RxJava 提供了几个运算符,如map, flatMap,filter等。例如,您可以在代码中替换第一个map如下:

Observable.fromIterable(stringList).filter(x -> x.contains(RANDOM_TEXT))

推荐阅读