我的数据库返回一个Flowable如下:
Flowable<List<Users>> users = MyActivity.myDatabase.myDAO().getUsers();
我想快速,轻松地将它转换为一个列表,这样我就可以计数它,迭代它,也许传递它作为一个数组列表。使用Java实现这一点的最佳方法是什么?
您必须使用阻塞调用来实际检索值。但是,从问题中并不能清楚地看出,您期望的是单个用户列表还是用户列表的列表。
如果你想要一个单一的List<Users>
,你可以这样做:
List<Users> usersList = users.blockingFirst();
如果你想要一个用户列表的列表,你需要这样做:
List<List<Users>> userLists = users.toList().blockingGet();
在任何一种情况下,如果您特别需要ArrayList
,则必须构造一个并复制元素,因为没有确切地告诉上述代码返回哪种List
实现。(例如,您可以在第一种情况下使用new ArrayList<>(users.blockingFirst())
,在第二种情况下使用类似的方法。)