Я хотел бы узнать в 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?