I am learning about collection classes in Java. I created an ArrayList and added some values to it.
package LearningJava;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Scanner;
public class Java{
    public static void  main(String args[]) {
        Collection values = new ArrayList();
        values.add(2);
        values.add(3);
        values.add(5);
        values.add(4);
        Iterator itr = values.iterator();
        for(int i = 0 ; i<values.size();i++) {
            System.out.println(itr.next());
        }
    }
}
I also iterated through this ArrayList.
If I add values after creating, the object of iterator throws an exception.
package LearningJava;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Scanner;
public class Java{
    public static void  main(String args[]) {
        Collection values = new ArrayList();
        values.add(2);
        values.add(3);
        values.add(5);
    
        Iterator itr = values.iterator();
        values.add(4);
    
        for(int i = 0 ; i<values.size();i++) {
            System.out.println(itr.next());
        }
    }
} 
It throws a java.util.ConcurrentModificationException. Why can't I add values after creating the object of iterator?
It is only throwing this exception in case of Iterator interface. When I create the object of other classes, it does not throw any exception.
package LearningJava;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Scanner;
public class Java{
    public static void  main(String args[]) {
        Collection values = new ArrayList();
        values.add(2);
        values.add(3);
        values.add(5);
    
         // creating the object of scanner instead of iterator's.
        Scanner input  = new Scanner(System.in);
        values.add(4);
        Iterator itr = values.iterator();
        for(int i = 0 ; i<values.size();i++) {
            System.out.println(itr.next());
        }
    }
}
Here it is not showing any errors. Why is this?
 
     
    