枚舉是故障安全的。失效安全迭代器將用於克隆原始集合。那麼爲什麼它會引發concurrentModificationException?請澄清。枚舉拋出concurrentModification異常。爲什麼?
請找我的代碼:
public static void main(String[] args) {
Vector<String> v=new Vector<String>();
v.add("Amit");
v.add("Raj");
v.add("Pathak");
v.add("Sumit");
v.add("Aron");
v.add("Trek");
Enumeration en=(Enumeration) Collections.enumeration(v);
while(en.hasMoreElements())
{
String value=(String) en.nextElement();
System.out.println(value);
v.remove(value);//modifying the collection
}
}
查找下面
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.Vector$Itr.checkForComodification(Unknown Source)
at java.util.Vector$Itr.next(Unknown Source)
at java.util.Collections$2.nextElement(Unknown Source)
at valar.org.src.EnumerationTest.main(EnumerationTest.java:24)
Vector和枚舉已過時修改代碼 - 使用'ArrayList'和'Iterator'代替。 – assylias
是的,如果你要從書本和教程中學習java,你可能需要找到一些在過去幾十年中寫的東西。如果他們在某所學校爲你教授這些東西,2017年,你可能想換個學校。 –
@assylias使用Enumeration的ArrayList拋出ConcurrentModificationException。我懷疑這是爲什麼枚舉失敗時枚舉引發此異常。 – user6426361