除了这里提供的所有优秀的解决方案,我想提供一个不同的解决方案。
我不确定您是否可以自由添加依赖项,但是如果可以的话,您可以将https://code.google.com/p/guava-libraries/作为依赖项添加。该库增加了对Java的许多基本功能操作的支持,并且可以使集合的工作更容易和更易读。
在代码中,我用T替换了列表的类型,因为我不知道你的列表输入了什么。
这个问题可以用番石榴可以解决这样的:
List<T> filteredList = new Arraylist<>(filter(list, not(XXX_EQUAL_TO_AAA)));
而且别的地方即可定义为XXX_EQUAL_TO_AAA:
public static final Predicate<T> XXX_EQUAL_TO_AAA = new Predicate<T>() {
@Override
public boolean apply(T input) {
return input.getXXX().equalsIgnoreCase("AAA");
}
}
但是,这是在您的情况可能是矫枉过正。只是随着收藏品的使用越多,它越强大。
OHW,还,你需要这些静态导入:
import static com.google.common.base.Predicates.not;
import static com.google.common.collect.Collections2.filter;
你不能从一个列表,而你遍历说列表中删除的元素。做一个副本并从中删除项目,或者直接对迭代器进行操作。 – thegrinner