Wprowadzając część dobrodziejstw operacji zbierania danych do naszej bazy kodów bez dodawania nowej zależności od bibliotek zewnętrznych, dodajemy te metody do naszego pakietu narzędziowego.Przedłużanie kolekcji nazw dla większej przejrzystości
static public List<T> filter(List<T> source, Predicate<T> filter);
static <Y,T> public List<Y> transform(List<T> source, Mutator<Y,T> filter);
static public boolean exists(List<T> source, Predicate<T> filter);
static public T findFirst(List<T> source, Predicate<T> filter);
static public boolean trueForAll(List<T> source, Predicate<T> filter);
z towarzyszącymi interfejsów
public interface Predicate<T> { public boolean apply(T item); }
public interface Mutator<T,Y> { public Y apply(T item); }
tak więc pytania:
- Czy Filtry dobre imię dla klasy zawierającej rozszerzenia? Jeśli nie, to lepiej?
- Czy Mutator < T, Y> odpowiednio nazwany?
- Wolałbym mapa do przekształcić i zmniejszyć do filtrem?
- Czy są jakieś ważne funkcje oparte na zestawie, o których zapomniałem zawrzeć w klasie biblioteki?
Edited by dodać: znaczny argumentu mam przeciwko mapie (a tym samym na rzecz przekształcić) jest to, że mapa ma znaczny ładunek semantyczny powodu wielu zastosowań java.util.Map
Dzięki, że jestem przyzwyczajony do myślenia w generycznych kategoriach CLR, a nie generycznych JDK5, to zdecydowanie dobry punkt. –