Wir stellen einige der guten Sammelvorgänge für unsere Codebase vor, ohne eine neue externe Bibliotheksabhängigkeit hinzuzufügen. Wir fügen diese Methoden unserem Dienstprogrammpaket hinzu.Naming Collection Extensions zur besseren Übersicht
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);
mit den damit verbundenen Schnittstellen
public interface Predicate<T> { public boolean apply(T item); }
public interface Mutator<T,Y> { public Y apply(T item); }
So sind die Fragen:
- Ist Filter einen guten Namen für die Klasse, um die Erweiterungen enthalten? Wenn nicht, ein besser?
- Ist Mutator < T, Y> richtig benannt?
- Soll ich lieber Karte-verwandeln und -Filter reduzieren?
- Gibt es irgendwelche wichtigen set-based Funktionen, die ich vergessen habe, in die Bibliotheksklasse aufzunehmen?
Edited hinzuzufügen: Ein wesentliches Argument Ich habe gegen Karte (und damit für verwandeln) ist, dass Karte aufgrund der vielen Anwendungen für java.util.Map signifikante semantische Last hat
Danke, da ich es gewohnt bin, in CLR-Generika und nicht in JDK5-Generika zu denken, ist das definitiv ein guter Punkt. –