在Java中过滤java.util.Collection

卢声远*_* Lu 2 java collections

我编写了一个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)

问题:

  1. 你认为有必要编写这个方法吗?
  2. 有关方法的任何改进?

Ada*_*son 5

你应该允许任何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)