Я хотел бы узнать в Guava, если есть какие-либо различия между 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
?