Introducendo parte della bontà delle operazioni di raccolta nel nostro codebase senza aggiungere una nuova dipendenza di libreria esterna, stiamo aggiungendo questi metodi al nostro pacchetto di utilità.Estensioni di raccolta di nomi per chiarezza
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);
Con le interfacce guardiano
public interface Predicate<T> { public boolean apply(T item); }
public interface Mutator<T,Y> { public Y apply(T item); }
Quindi, le domande:
- sono i filtri un buon nome per la classe che contiene le estensioni? Se no, un migliore?
- È il mutatore < T, Y> nome appropriatamente?
- Dovrei preferire mappa-trasformare e ridurre-filtro?
- Esistono importanti funzioni basate su set che ho dimenticato di includere nella classe della libreria?
A cura di aggiungere: Un argomento importante che ho contro mappa (e quindi a favore di trasformare) è che mappa ha una significativa del carico semantico a causa dei molti usi per java.util.Map
Grazie, dato che sono abituato a pensare ai generici CLR piuttosto che ai generici JDK5, è sicuramente un buon punto. –