我期待ConcurrentModificationException
在下面的代碼,但它工作正常。澄清@ConcurrentModificationException在HashMap
HashMap<Integer, String>table1 = new HashMap<Integer, String>();
table1.put(1, "Sam");
table1.put(2, "Jon");
table1.put(3, "Doe");
Iterator itr1 = table1.entrySet().iterator();
table1.put(3, "DONN");
while(itr1.hasNext())
{
System.out.println("---Value--" + itr1.next());
}
按該JavaDoc中HashMap
:
所有的此類的「collection視圖方法」所返回的迭代器都是快速失敗的:如果地圖隨時迭代後結構修飾以任何方式創建,除了通過迭代器自己的remove方法外,迭代器將拋出ConcurrentModificationException異常。
如此以來,我收到Iterator
我應該得到的ConcurrentModificationException
後修改HashMap
。爲什麼不投擲?
該文檔還指出:「失效快速迭代器盡最大努力拋出ConcurrentModificationException。因此,編寫依賴於此異常的程序的正確性會導致錯誤:*迭代器的失效 - 快速行爲應該僅用於檢測錯誤*。「 – kiheru