如何创建列表过滤器

时间:2010-07-12 13:09:17

标签: java

在我的列表中,我想忽略某些条目(创建列表过滤器),忽略我的意思是删除。如果我的列表包含A到Z字符串元素,那么我想删除B,F和Z.

如何使用var args,从列表中删除任意数量的元素?

谢谢

3 个答案:

答案 0 :(得分:6)

您可以使用List#removeAll()

List<String> alphabet = new ArrayList<String>();
alphabet.add("A");
alphabet.add("B");
alphabet.add("C");
alphabet.add("D");
alphabet.add("E");
alphabet.add("F");
alphabet.add("G");
// Etc..
List<String> toRemove = Arrays.asList("B", "F"); // Takes varargs!

alphabet.removeAll(toRemove);

System.out.println(alphabet); // A, C, D, E, G

答案 1 :(得分:3)

使用guava

final Iterable<String> filtered = Iterables.removeIf(asList("A","B","C", "Z"), new Predicate<String>(){
    public boolean apply(final String element){
       // your filter, eg
       return element.equals("A");
    )
}

答案 2 :(得分:1)

快速猜测(使用varargs):

void removeFromList(List<Object> list, Object ... filterElements){
  for(Object elm:filterElements){
    while(list.remove(elm));
  }
}