جاوا میں ConcurrentModificationException کیا ہے؟
مثال
آئیے ایک مثال دیکھتے ہیں کہ یہ استثناء کیسے ہوتا ہے۔import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
//Test driver for ConcurrentModificationException
public class ConcurrentModificationExceptionTestDriver1 {
public static void main(String[] args) {
List<String> businessDays = new ArrayList<>();
businessDays.add("Monday");
businessDays.add("Tuesday");
businessDays.add("Wednesday");
businessDays.add("Thursday");
businessDays.add("Friday");
businessDays.add("Saturday");
businessDays.add("Sunday");
Iterator<String> iterator = businessDays.iterator();
while (iterator.hasNext()) {
String day = iterator.next();
if (day.equals("Sunday")) {
// removing a list item while iterating
// leading to java.util.ConcurrentModificationException
businessDays.remove(day);
}
}
}
}
آؤٹ پٹ
java.base/java.util.ArrayList$Itr.next :996) milestone.thirty.seven.ConcurrentModificationExceptionTestDriver1.main پر(ConcurrentModificationExceptionTestDriver1.java:22)
جاوا میں ConcurrentModificationException سے کیسے بچیں؟
ConcurrentModificationException کے لیے مختلف حل موجود ہیں ۔ یہاں چند ایک درج ہیں۔ آپ اپنی ضرورت کے مطابق کسی کو بھی منتخب کر سکتے ہیں۔- تکرار کرتے وقت ترمیم سے گریز کریں۔
- بیک وقت تکرار اور ترمیم کے لیے روایتی لوپس استعمال کریں۔
- تکرار کرنے والوں کا استعمال کرتے ہوئے ترمیم کرنے کے لیے اقدار کی ایک کاپی بنائیں۔ تکرار ختم ہونے کے بعد اقدار کو اپ ڈیٹ کریں۔
مثال
یہاں ایک مثال ہے کہ آپ ConcurrentModificationException سے کیسے بچ سکتے ہیں ۔import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//Test driver for ConcurrentModificationException
public class ConcurrentModificationExceptionTestDriver2 {
public static void main(String[] args) {
List<String> businessDays = new ArrayList<>();
businessDays.add("Monday");
businessDays.add("Tuesday");
businessDays.add("Wednesday");
businessDays.add("Thursday");
businessDays.add("Friday");
businessDays.add("Saturday");
businessDays.add("Sunday");
System.out.println("Initial Business Days: " + businessDays);
// Method II - Using traditional for loop
for (int i = 0; i < businessDays.size(); i++) {
if (businessDays.get(i).equals("Sunday")) {
businessDays.remove(i);
}
}
Iterator<String> iterator = businessDays.iterator();
List<String> businessDaysToBeRemoved = new ArrayList<>();
// Method III - Creating a copy of elements
while (iterator.hasNext()) {
String day = iterator.next();
if (day.equals("Saturday")) {
// Add values to be removed in the list
businessDaysToBeRemoved.add(day);
}
}
businessDays.removeAll(businessDaysToBeRemoved);
System.out.println("Final Business Days: " + businessDays);
}
}
آؤٹ پٹ
ابتدائی کاروباری دن: [پیر، منگل، بدھ، جمعرات، جمعہ، ہفتہ، اتوار] آخری کاروباری دن: [پیر، منگل، بدھ، جمعرات، جمعہ]
GO TO FULL VERSION