我有一个
Observable<List<ObjectModel>>
我需要返回的列表是不可变的,但是由于某种原因,在应用下面的过滤器时它不是。谁能告诉我如何保持不变性?谢谢!
observable.subscribeOn(Schedulers.io())
.flatMap(Observable::from).filter(objectModel -> {
return objectModel.isEnabled();
}).toList();
答案 0 :(得分:3)
toList
运算符会在您注意到List
时发出可变java.util.ArrayList
。只需将其映射到您选择的不可变列表类型即可。例如:
obs.toList()
.map(Collections::unmodifiableList);
或使用番石榴:
obs.toList()
.map(ImmutableList::copyOf);
答案 1 :(得分:1)
这里解释了为什么我遇到问题的答案:
http://www.javacreed.com/modifying-an-unmodifiable-list/
添加
.map(Collections::unmodifiableList)`
修好了