किसी ArrayList के माध्यम से पुनरावृत्त करते समय, पुनरावृत्ति के दौरान तत्वों को हटाने का प्रयास करने पर java.util.ConcurrentModificationException हो सकता है . ऐसा ArrayList के फ़ेल-फ़ास्ट तंत्र के कारण होता है, जो पुनरावृत्ति के दौरान सूची की संरचना में किसी भी बदलाव का पता लगाता है और अप्रत्याशित परिणामों को रोकने के लिए अपवाद फेंकता है।
इस समस्या को हल करने के लिए, विचार करने के लिए दो प्राथमिक दृष्टिकोण हैं:
इस दृष्टिकोण में लूप के भीतर हटाए जाने वाले तत्वों की पहचान करना और उन्हें एक अलग सूची में जोड़ना शामिल है। एक बार पुनरावृत्ति पूरी हो जाने पर, रिमूवऑल() विधि का उपयोग करके मूल सूची से सभी तत्वों को हटा दें।
ArrayList valuesToRemove = new ArrayList();
for (A a : abc) {
if (a.shouldBeRemoved()) {
valuesToRemove.add(a);
}
}
abc.removeAll(valuesToRemove);
वैकल्पिक रूप से, आप इटरेटर की अपनी रिमूव() विधि का उपयोग कर सकते हैं। हालाँकि, ध्यान दें कि इस दृष्टिकोण के लिए उन्नत फॉर लूप के बजाय पारंपरिक फॉर लूप का उपयोग करने की आवश्यकता है।
for (Iterator iterator = abc.iterator(); iterator.hasNext();) {
A a = iterator.next();
if (a.shouldBeRemoved()) {
iterator.remove();
}
}
इन तरीकों में से किसी एक को लागू करके, आप पुनरावृत्ति के दौरान अपने ArrayList को प्रभावी ढंग से संशोधित करते हुए ConcurrentModificationException से बच सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3