Напишите класс Filter, который принимает коллекцию и возвращает коллекцию:
public interface Filter<K, V> {
Collection<V> filter(Collection<K> unfiltered, Map parameters);
}
Тогда вы можете делать все, что захотите:
public class ByIdFilter<Person, String> implements Filter<Person, String> {
public Collection<String> filter(<Collection<Person> persons, Map parameters) {
// particulars here.
}
}
Возможно, LINQ из .NET будетхорошая модель для расследования и следования.