在您的情况下,无需循环访问列表,因为您知道要删除哪个对象。您有几种选择。首先,您可以按索引删除对象(因此,如果您知道,该对象是第二个列表元素):
a.remove(1); // indexes are zero-based
或者,您可以删除字符串的第一个匹配项:
a.remove("acbd"); // removes the first String object that is equal to the
// String represented by this literal
或者,删除具有特定值的所有字符串:
while(a.remove("acbd")) {}
如果集合中有更复杂的对象,并且想要删除具有特定属性的实例,则情况会稍微复杂一些。因此,您无法通过对与要删除的对象相等的对象来删除它们。remove
在这些情况下,我通常使用第二个列表来收集我要删除的所有实例,并在第二次过程中删除它们:
List<MyBean> deleteCandidates = new ArrayList<>();
List<MyBean> myBeans = getThemFromSomewhere();
// Pass 1 - collect delete candidates
for (MyBean myBean : myBeans) {
if (shallBeDeleted(myBean)) {
deleteCandidates.add(myBean);
}
}
// Pass 2 - delete
for (MyBean deleteCandidate : deleteCandidates) {
myBeans.remove(deleteCandidate);
}