Я написал расширенный класс Iterable , который поддерживает применение функциональных алгоритмов без копирования содержимого коллекции.
Использование:
List myList = new ArrayList(){ 1, 2, 3, 4, 5 }
Iterable filtered = Iterable.wrap(myList).select(new Predicate1()
{
public Boolean call(Integer n) throws FunctionalException
{
return n % 2 == 0;
}
})
for( int n : filtered )
{
System.out.println(n);
}
фактически выполнить
for( int n : myList )
{
if( n % 2 == 0 )
{
System.out.println(n);
}
}