sind keine Neuigkeit und daher auch schon von anderen Implementiert.
Ich wollte aus einer Liste von Elementen nur ganz bestimmte Elemente holen und über diese direkt iterieren. Da die Elemente immer wieder nach unterschiedlichen Kriterien gefiltert werden sollten, dachte ich mir dass ich das ja verallgemeinern könnte. Eventuell mit einem Filter Interface:
interface Filter<T> {
boolean isCase(T element);
}
Und einer allgemeinen Filterfunktion:
List<T> filterList(List<T> listOfElements, Filter<T> filter) {
List<T> filteredElements = new ArrayList<T>();
for (T element: listOfElements) {
if (filter.isCase(element)) {
filteredElements.add(element);
}
}
return filteredElements;
}
Dann habe ich einfach mal filter und list und java in google eingegeben und bin (natürlich) über andere Leute mit demselben Problem und ähnlichen Ansätzen gestossen.
Bei google-collections und bei den jakarta-commons (mit generics). Dort werden allerdings auch direkt schon Iteratoren bereitgestellt, die filtern können und vieles mehr.
Also auch diesmal muss man das Rad nicht neu erfinden. Schade 🙂
Bei google-collections heissen die Filter im übrigen Predicates.