我想知道在番石榴中,Iterables.filter(Iterable, Predicate)
和Collections2.filter(Collection, Predicate)
方法之间是否有任何区别?
它们似乎既保持迭代顺序,又提供实时视图。Javadoc 说调用Collections2.filter().size()
将遍历所有元素。
假设我有一个谓词来过滤项目列表,因此我想要视图中剩余的项目数(或列表,无关紧要)。我应该用什么?Collections2.filter
由于该size()
方法由Collection
s提供,因此使用起来似乎更简单。
但在后台,是否有区别:
ImmutableList.copyOf(
Iterables.filter(lead.getActions(), isRealActionDoneByUserPredicate)
).size();
和:
Collections2.filter(lead.getActions(),isRealActionDoneByUserPredicate).size();
顺便说一句,构建一个ImmutableList
比构建一个正常的更快ArrayList
吗?