"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पुनरावृत्ति के दौरान किसी ArrayList से तत्वों को हटाते समय ConcurrentModificationException से कैसे बचें?

पुनरावृत्ति के दौरान किसी ArrayList से तत्वों को हटाते समय ConcurrentModificationException से कैसे बचें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:233

How to Avoid ConcurrentModificationException When Removing Elements from an ArrayList During Iteration?

किसी ArrayList को पुनरावृत्त करते समय संशोधित करते समय ConcurrentModificationException को कैसे संभालें

किसी ArrayList के माध्यम से पुनरावृत्त करते समय, पुनरावृत्ति के दौरान तत्वों को हटाने का प्रयास करने पर java.util.ConcurrentModificationException हो सकता है . ऐसा ArrayList के फ़ेल-फ़ास्ट तंत्र के कारण होता है, जो पुनरावृत्ति के दौरान सूची की संरचना में किसी भी बदलाव का पता लगाता है और अप्रत्याशित परिणामों को रोकने के लिए अपवाद फेंकता है।

इस समस्या को हल करने के लिए, विचार करने के लिए दो प्राथमिक दृष्टिकोण हैं:

विकल्प 1: हटाने के लिए मानों की एक सूची बनाएं

इस दृष्टिकोण में लूप के भीतर हटाए जाने वाले तत्वों की पहचान करना और उन्हें एक अलग सूची में जोड़ना शामिल है। एक बार पुनरावृत्ति पूरी हो जाने पर, रिमूवऑल() विधि का उपयोग करके मूल सूची से सभी तत्वों को हटा दें।

ArrayList valuesToRemove = new ArrayList();

for (A a : abc) {
    if (a.shouldBeRemoved()) {
        valuesToRemove.add(a);
    }
}

abc.removeAll(valuesToRemove);

विकल्प 2: इटरेटर रिमूव का उपयोग करें

वैकल्पिक रूप से, आप इटरेटर की अपनी रिमूव() विधि का उपयोग कर सकते हैं। हालाँकि, ध्यान दें कि इस दृष्टिकोण के लिए उन्नत फॉर लूप के बजाय पारंपरिक फॉर लूप का उपयोग करने की आवश्यकता है।

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