我有我的班'炸彈'Java中的ArrayList。Java刪除arraylist迭代器
該類有一個isExploded方法,如果炸彈爆炸了,這個方法將返回true,否則返回false。
現在我試圖遍歷這個ArrayList,調用這個方法isExploded並從列表中移除元素,如果它返回true。
我知道如何遍歷:
for (Iterator i = bombGrid.listIterator(); i.hasNext();) {
if() {
i.remove();
}
但我不知道如何通過迭代器訪問炸彈類本身的方法isExploded。有誰知道這個答案嗎?
真誠,
盧克索
如果列表被修改**,它的罰款。 –
看看[Itr類]的實現(http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList。迭代器%28%29):它處理刪除當前元素的情況。 –
對不起,但即使它工作,我仍然認爲它不是一個好的做法,因爲它是在javadoc中聲明的:請注意,迭代器的故障快速行爲無法得到保證,因爲通常來說,不可能做出任何硬性保證存在未同步的併發修改。失敗快速迭代器盡最大努力拋出ConcurrentModificationException。因此,編寫一個依賴於此異常的程序是正確的:迭代器的快速失敗行爲應僅用於檢測錯誤。 而且我也看到了潛在的內存泄漏 – user1898956