फास्ट विफल: जिसका अर्थ है कि अगर वे का पता लगाने कि संग्रह के बाद से यात्रा शुरू कर दिया बदल गया है, वे अनियंत्रित ConcurrentModificationException
फेंक देते हैं।फास्ट असफल - अपवाद केवल तब होता है जब कोई तत्व जोड़ जब न निकालने की
मैं एक परीक्षण उदाहरण इस demonsterate के लिए लिखा है:
String hi = "Hi";
list.add(hi);
list.add("Buy");
System.out.println("list before: " + list);
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String string = iterator.next();
list.add("Good");
}
उत्पादन होता है:
list before: [Hi, Buy]
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
at java.util.ArrayList$Itr.next(ArrayList.java:831)
at thread.CollectionTest.main(CollectionTest.java:19)
जो उम्मीद है। हालांकि, जब एक तत्व निकाल दिया जाता है, अपवाद नहीं है:
List<String> list = new ArrayList<>();
String hi = "Hi";
list.add(hi);
list.add("Buy");
System.out.println("list before: " + list);
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String string = iterator.next();
list.remove(hi);
}
आउटपुट:
list before: [Hi, Buy]
list after: [Buy]
कि क्यों है? दोनों मामलों में सूची संशोधित है।
'iterator.next()' से पहले हटाने का प्रयास करें या 3 प्रविष्टियों के साथ प्रयास करें ... – Fildor
समवर्ती मोडिफिकेशन एक्सेप्शन फेंक देगा जब आप पुनरावृत्ति के दौरान तत्व हटाते हैं। आपके मामले में आप अगली() को कॉल करते हैं और फिर आप ऑब्जेक्ट को हटा देते हैं। – Truthira
@ थिनिगाइरासु मैं हालांकि 'हैनक्स्ट() 'अपवाद भी – Sam