在我的列表中,我想忽略某些条目(创建列表过滤器),通过忽略我的意思是删除。如果我的列表包含A到Z字符串元素,假设我想删除B,F和Z.如何创建列表过滤器
我该如何做到这一点与var args,要从列表中删除任意数量的元素?
谢谢
在我的列表中,我想忽略某些条目(创建列表过滤器),通过忽略我的意思是删除。如果我的列表包含A到Z字符串元素,假设我想删除B,F和Z.如何创建列表过滤器
我该如何做到这一点与var args,要从列表中删除任意数量的元素?
谢谢
您可以使用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
快速猜测(使用可变参数):
void removeFromList(List<Object> list, Object ... filterElements){
for(Object elm:filterElements){
while(list.remove(elm));
}
}
使用番石榴
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");
)
}
'contains'应该是关于这个问题的“equals”。 – whiskeysierra 2010-07-13 09:29:21
@威利:thx,修正完成 – 2010-07-13 09:56:05
什么新的ArrayList(asList( “A”, “B” 建设的字母.. 。))? (副本不贵),或者如果你可以使用番石榴Lists.newArrayList(“A”,“B”,...) –
2010-07-12 13:34:56
@Sylvian:这取决于OP。问题不在于建设。只要没有明确提到,就会假设标准的Java SE API。诚然,番石榴很棒,但我无法从头顶回答基于番石榴的解决方案。只要给出/指出合理的基于Java SE API的答案,您就可以自由地这样做。 OP可能有理由不使用/偏好“第三方”API。 – BalusC 2010-07-12 13:36:29
好吧,我明白你的观点,谢谢你的解释。下一次我回答这个问题时,我首先会考虑用标准API(除非提到) – 2010-07-12 13:44:04