हम सभी जानते हैं कि आप निम्न कार्य नहीं कर सकते हैं ConcurrentModificationException:
for (Object i : l) {
if (condition(i)) {
l.remove(i);
}
}
लेकिन यह स्पष्ट रूप से कभी-कभी काम करता है, लेकिन हमेशा नहीं। यहाँ कुछ विशिष्ट कोड है:
public static void main(String[] args) {
Collection<Integer> l = new ArrayList<>();
for (int i = 0; i < 10; ++i) {
l.add(4);
l.add(5);
l.add(6);
}
for (int i : l) {
if (i == 5) {
l.remove(i);
}
}
System.out.println(l);
}
यह, निश्चित रूप से, में परिणाम:
Exception in thread "main" java.util.ConcurrentModificationException
हालांकि कई सूत्र यह नहीं कर रहे हैं। वैसे भी।
इस समस्या का सबसे अच्छा समाधान क्या है? मैं इस अपवाद को फेंकने के बिना एक लूप में संग्रह से एक आइटम कैसे निकाल सकता हूं?
मैं भी Collectionयहाँ एक मनमाना उपयोग कर रहा हूँ , जरूरी नहीं कि ArrayListआप पर भरोसा नहीं कर सकते get।