Rx java 使用RxJava筛选项目列表

Rx java 使用RxJava筛选项目列表,rx-java,Rx Java,如何使用RxJava筛选项目列表 我有以下代码,loadData()发出一个列表: 我想在loadData()之后应用过滤器。您可以在下一个代码段中看到我的解决方案,但也许有更好的方法 repository.loadData() .map(chatrooms -> { List<Chatroom> openChatrooms = new ArrayList<>(); for (Chatroom ch

如何使用RxJava筛选项目列表

我有以下代码,
loadData()
发出一个
列表

我想在
loadData()
之后应用过滤器。您可以在下一个代码段中看到我的解决方案,但也许有更好的方法

 repository.loadData()
        .map(chatrooms -> {

            List<Chatroom> openChatrooms = new ArrayList<>();
            for (Chatroom chatroom: chatrooms){
                if (!chatroom.getBlocked().equals(IS_BLOCKED)) {
                    openChatrooms.add(chatroom);
                }
            }
            return openChatrooms;

        })
        .subscribe(chatrooms -> {
            view.showData(chatrooms);
            view.showEmptyState(chatrooms.size() == 0);
        }, throwable -> Log.i("OnError", "onLoadChatrooms ", throwable)));
repository.loadData()
.map(聊天室->{
List openchattrooms=new ArrayList();
用于(聊天室聊天室:聊天室){
如果(!chatroom.getBlocked().equals(被阻止)){
添加(聊天室);
}
}
返回开放聊天室;
})
.订阅(聊天室->{
查看。显示数据(聊天室);
view.showEmptyState(chattrooms.size()==0);
},throwable->Log.i(“OnError”,“onload聊天室”,throwable));

您的解决方案即使没有“功能性”的风格,也很好

通常,我会写这样的东西-

loadData()
.flatMap(聊天室->{返回可观察的.from(聊天室);})
.filter(聊天室->{return!chatroom.getBlocked().equals(IS_BLOCKED);})
.toList();

您的解决方案即使没有“功能性”的风格,也很好

通常,我会写这样的东西-

loadData()
.flatMap(聊天室->{返回可观察的.from(聊天室);})
.filter(聊天室->{return!chatroom.getBlocked().equals(IS_BLOCKED);})
.toList();
这应该会有所帮助


这应该会有所帮助。

Hi的可能副本的可能副本。如果我只想获取1个数据,然后断开另一个,怎么做?尝试使用take(n)运算符。在argument.Hi中通过1。如果我只想获取1个数据,然后断开另一个,怎么做?尝试使用take(n)运算符。在参数中传递1。
 repository.loadData()
        .map(chatrooms -> {

            List<Chatroom> openChatrooms = new ArrayList<>();
            for (Chatroom chatroom: chatrooms){
                if (!chatroom.getBlocked().equals(IS_BLOCKED)) {
                    openChatrooms.add(chatroom);
                }
            }
            return openChatrooms;

        })
        .subscribe(chatrooms -> {
            view.showData(chatrooms);
            view.showEmptyState(chatrooms.size() == 0);
        }, throwable -> Log.i("OnError", "onLoadChatrooms ", throwable)));
 loadData()
     // Opther operations if any
     .filter((chatroom -> { return !chatroom.getBlocked().equals(IS_BLOCKED);})
     .toList()
     .subscribe(getObserver()); // implement your getObserver() method for observer.