在我的列表中,我想忽略某些条目(创建列表过滤器),忽略我的意思是删除。如果我的列表包含A到Z字符串元素,那么我想删除B,F和Z.
如何使用var args,从列表中删除任意数量的元素?
谢谢
答案 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));
}
}