import java.util.ArrayList; import java.util.List; public class Colect { public List lista; // tworzenie obiektu typu Colect zawierajacego w sobie liste elementow typu T public static Colect create(List x) { Colect tmp = new Colect(); tmp.lista = x; return tmp; } // usuwanie z listy elementy nie spelniajace wymagan public Colect when(Select x) { // usuwam z listy elementy nie przechodzace przez funkcje 'select' z podanego obiektu typu 'Select' for(int i = 0; i < lista.size(); i++) { T element = lista.get(i); if(!x.select(element)) { lista.remove(i); // jesli usuwam 'aktualny' (lub wczesniejszy) element listy to musze zmniejszyc iterator o 1 i--; } } return this; } // public List mapEvery(Mapper mapInt) { // lista zwracana, inny typ niz przyjmowana (przyjmuje T i zwraca S) List listaZwracana = new ArrayList(); for(int i = 0; i < lista.size(); i++) { // pobieram element listy T element = lista.get(i); // modyfikuje jego wartosc uzywajac funkcji 'map' z podanego 'Mapper'a // przy okazji typ zmienia sie z T na S S elementZmodyfikowany = mapInt.map(element); // zapisuje nowa wartosc w miejsce starej na liscie listaZwracana.add(elementZmodyfikowany); } return listaZwracana; } }