这里移除项目是我使用从链表中删除某个项目的伪代码:有效地从Java的LinkedList
public static void removeByID(LinkedList<Fruit> fruits, int fruitID) {
for(Fruit f : fruits) {
if (f.ID == fruitID) {
fruits.remove(f);
return;
}
}
}
我想这是不是很有效,因为fruits.remove()
将再次迭代在名单上。想知道是否有更好的方法来实现这一点。
我预计此代码抛出[ConcurrentModificationException](http://docs.oracle.com/javase/7/docs/api/java/util/ConcurrentModificationException.html),因为LinkedList在迭代期间被修改。刚刚开启了eclipse,并没有抛出这样的例外。我错过了什么? – Gowtham 2014-10-31 17:48:01
@Gowtham它没有这样做的原因是'return':'fruits.remove()'只是将集合标记为已修改集合,(隐藏)迭代器的下一个操作将会 - 如果有的话 - 会看到并抛出。 – zapl 2014-10-31 23:36:37
@zapl谢谢。这使得它清楚 – Gowtham 2014-11-01 06:53:13