這裏移除項目是我使用從鏈表中刪除某個項目的僞代碼:有效地從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