Enumeration
wirft nicht ConcurrentModificationException
, warum?Java Enumeration vs Iterator
Siehe unten stehenden Code.
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<String> en=v.elements();
while(en.hasMoreElements())
{
String value=(String) en.nextElement();
System.out.println(value);
v.remove(value);
}
}
Es druckt nur:
Amit Pathak Aron
Warum ist das ein solches Verhalten. Können wir sagen, dass Enumerator
Thread-sicher ist.
Bearbeiten: Bei der Arbeit mit Iterator wirft es ConcurrentModificationException
in Single-Thread-Anwendung.
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");
Iterator<String> it=v.iterator();
while(it.hasNext())
{
String value=(String) it.next();
System.out.println(value);
v.remove(value);
}
}
Bitte überprüfen.
Bitte lesen http://stackoverflow.com/questions/948194/different-using-java-util-enumeration-and-iterator – Garbage
Was ist der Hintergrund dieser Frage? Erwägen Sie die Verwendung von Enumerationen anstelle von Iteratoren in einer Umgebung mit mehreren Threads? –
Gibt es irgendwo mehr Code, über den wir Bescheid wissen sollten? Es gibt kein Multithreading im obigen Beispielcode. Wenn Sie also keinen bestimmten Grund haben, die Thread-Sicherheit zu beschuldigen, denke ich, dass Sie hier ein wenig abwesend sind. – posdef