I have tried the following two scenarios:
    ArrayList arrayList = new ArrayList();
    arrayList.add("1");
    arrayList.add("2");
    arrayList.add("3");
    Iterator iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        String value = (String) iterator.next();
        System.out.println("---->" + value);
        if (value.equals("1")) {
            arrayList.remove(0);
        }
    }
The first scenario output is :
---->1
Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)
    at Test.main(Test.java:83)
Probably the ConcurrentModificationException exception is caused because I'm trying to modify the collection while I'm still iterating it.
In the second scenario I changed the if() condition from value.equals("1") to value.equals("2") and the program does not throw any error.
ArrayList arrayList = new ArrayList();
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()) {
    String value = (String) iterator.next();
    System.out.println("---->" + value);
    if (value.equals("2")) {
        arrayList.remove(0);
    }
}
The second scenario output is:
---->1
---->2
In both the scenarios, my program does not reach the 3rd element (Value : 3).
Can you please help me to understand the problem ?
 
     
     
     
    

 
     
    