Если коллекция достаточно мала, вы можете альтернативно использовать копию коллекции для итерации, если хотите иметь возможность удалять элементы, чтобы вам не пришлось действовать так, как будто у вас две коллекции.
for(T e : collection.clone())
if(e.shouldBeRemoved())
collection.remove();
Более того, Apache CollectionUtils (и, вероятно, есть альтернатива Google и универсальная альтернатива) обеспечивает filter(java.util.Collection collection, Predicate predicate)
.Этот пример возвращает весь список.Вы можете сохранить предикат для повторного использования.
CollectionUtils.filter(collection, new Predicate(){
boolean evaluate(Object object){return true;}
});