我编写了一个util类来过滤元素,java.util.Collection如下所示:
public class Util{
public static <T> void filter(Collection<T> l, Filter<T> filter) {
Iterator<T> it= l.iterator();
while(it.hasNext()) {
if(!filter.match(it.next())) {
it.remove();
}
}
}
}
public interface Filter<T> {
public boolean match(T o);
}
Run Code Online (Sandbox Code Playgroud)
问题:
你应该允许任何Filter<? super T>不仅仅是Filter<T>.
客户端可能还希望有一个返回新Collection的方法:
public static <T> Collection<T> filter(Collection<T> unfiltered,
Filter<? super T> filter)
Run Code Online (Sandbox Code Playgroud)