代码之家  ›  专栏  ›  技术社区  ›  Gandalf StormCrow

如何创建列表筛选器

  •  1
  • Gandalf StormCrow  · 技术社区  · 16 年前

    我该如何处理var args,从列表中删除任意数量的元素?

    谢谢你

    3 回复  |  直到 16 年前
        1
  •  6
  •   BalusC    13 年前

    你可以利用 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
    
        2
  •  3
  •   sly7_7    16 年前

    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");
        )
    }
    
        3
  •  1
  •   f1sh    16 年前

    快速猜测(使用varargs):

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