我一直崩潰並在if語句中獲取java.util.NoSuchElementException。我的印象是,雖然(Iterator.hasNext())確保Iterator.next()調用不會導致緩衝區溢出。從java中的最內層嵌套迭代器中移除元素NoSuchElementException
這是通過兩個嵌套的迭代器的正確的算法循環,並且當發現匹配時移除的迭代中的一個元素,而不引發這樣的例外(我認爲通過超速數組邊界引起的)?
進入這裏 {
Iterator<Integer> d = entitiesDeleteQueue.iterator();
Iterator<Entity> e = entities.iterator();
while (d.hasNext()) {
while (e.hasNext()) {
if (d.next() == e.next().getEntityId())
e.remove();
}
}
}
如果'entities'有三個元素,'entitiesDeleteQueue'有兩個,你應該考慮到會發生什麼。你可能想在紙上運行它。 –
d.next()將在最後的e.hasNext()迭代中溢出。謝謝。 – DayTripperID
另外,我看到每次調用next()時我都在循環內部推進最外層的迭代器。我想要的效果是嵌套for循環,其中外循環的每次迭代都將一個外部元素與每個內部元素進行比較。爲了實現這一點,我將不得不在不進入它的情況下調用外部循環的迭代器元素,而我在內部循環中。有沒有辦法做到這一點? – DayTripperID