https://raw.githubusercontent.com/vsaravanan/java22/master/src/main/java/console/multithreading/RemoveFromArrayList.java

 

 

public class RemoveFromArrayList {


   
public static void main(String[] args) {
       
ArrayList<Integer> list = new ArrayList<>();
       
list.add(1);
       
list.add(2);
       
list.add(3);
       
list.add(4);
       
ArrayList<Integer> list2 = new ArrayList<>(list);
       
ArrayList<Integer> list3 = new ArrayList<>(list);

       
Iterator<Integer> iterator = list.iterator();
       
while (iterator.hasNext()) {
           
Integer number = iterator.next();
           
if (number % 2 == 0) { // Remove even numbers
               
iterator.remove();
            }
        }

       
System.out.println(list); // Output: [1, 3]




       
for (Iterator<Integer> iterator2 = list2.iterator(); iterator2.hasNext(); ) {
           
Integer number = iterator2.next();
           
if (number % 2 == 0) { // Remove even numbers
               
iterator2.remove();
            }
        }

       
System.out.println(list2); // Output: [1, 3]



       
try {
           
for (Integer number : list3) {
               
if (number % 2 == 0) {
                   
list3.remove(number); // This will cause ConcurrentModificationException
               
}
            }
        }
catch (Exception e) {
           
System.out.println("Exception: " + e);
        }

       
System.out.println(list3); // Output: [1, 3]
   
}
}

 

 

[1, 3]

[1, 3]

Exception: java.util.ConcurrentModificationException

[1, 3, 4]