Avatar ·

बिना ConcurrentModificationException के लूप में कलेक्शन से ऑब्जेक्ट हटाना

सभी को नमस्ते! मैं टास्क लिस्ट मैनेज करने के लिए Java में एक छोटा एप्लिकेशन लिख रहा हूँ। मेरे पास ArrayList है, जहाँ Task एक सरल POJO है जिसमें boolean isCompleted फील्ड है। मुझे लिस्ट से सभी पूर्ण किए गए टास्क हटाने हैं। मैंने यह कोड लिखा: ```java List tasks = new ArrayList<>(); // ... टास्क जोड़ें ... for (Task task : tasks) { if (task.isCompleted()) { tasks.remove(task); } } ``` लेकिन रन करने पर मुझे `ConcurrentModificationException` मिलता है। मैंने पढ़ा कि यह इटरेशन के दौरान कलेक्शन को मॉडिफाई करने से संबंधित है, लेकिन मुझे समझ नहीं आता कि इसे सही तरीके से कैसे करें। मैंने इंडेक्स के साथ सामान्य for लूप आज़माया — कभी-कभी काम करता है, कभी-कभी IndexOutOfBoundsException फेंकता है, क्योंकि हटाने के बाद इंडेक्स शिफ्ट हो जाते हैं। कृपया बताएं कि लूप में कलेक्शन से एलिमेंट्स को सही तरीके से कैसे हटाएं? क्या कोई विशेष iterator का उपयोग करना चाहिए या Java 8+ में अधिक आधुनिक तरीके हैं? पहले से धन्यवाद!