在您的情况下,无需遍历列表,因为您知道要删除哪个对象。您有几种选择。首先,您可以按索引删除对象(因此,如果您知道,该对象是第二个列表元素):
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); }


