I have the below class for checking removing of object from arraylist by using foreach loop
import java.util.ArrayList;
public class CheckArrayList {
/**
* @return the a
*/
public int getA() {
return a;
}
/**
* @param a
* the a to set
*/
public void setA(int a) {
this.a = a;
}
/**
* @return the b
*/
public int getB() {
return b;
}
/**
* @param b
* the b to set
*/
public void setB(int b) {
this.b = b;
}
int a;
int b;
public static void main(String[] args) {
try {
CheckArrayList checkArrayList1 = new CheckArrayList();
checkArrayList1.setA(10);
checkArrayList1.setB(20);
CheckArrayList checkArrayList2 = new CheckArrayList();
checkArrayList2.setA(30);
checkArrayList2.setB(40);
ArrayList<CheckArrayList> aList = new ArrayList<CheckArrayList>();
aList.add(checkArrayList1);
aList.add(checkArrayList2);
System.out.println("size of list before iterate = " + aList.size());
for (CheckArrayList checkArrayList : aList) {
aList.remove(checkArrayList);
System.out.println("inside loop");
}
System.out.println("size of list after iterate = " + aList.size());
} catch (Exception e) {
e.printStackTrace();
}
}
}
while doing above operation it is not showing any exception but it comes inside the loop only once.
if I add one more object to ist and doing same operation it showing java.util.ConcurrentModificationException
import java.util.ArrayList;
public class CheckArrayList {
/**
* @return the a
*/
public int getA() {
return a;
}
/**
* @param a
* the a to set
*/
public void setA(int a) {
this.a = a;
}
/**
* @return the b
*/
public int getB() {
return b;
}
/**
* @param b
* the b to set
*/
public void setB(int b) {
this.b = b;
}
int a;
int b;
public static void main(String[] args) {
try {
CheckArrayList checkArrayList1 = new CheckArrayList();
checkArrayList1.setA(10);
checkArrayList1.setB(20);
CheckArrayList checkArrayList2 = new CheckArrayList();
checkArrayList2.setA(30);
checkArrayList2.setB(40);
CheckArrayList checkArrayList3 = new CheckArrayList();
checkArrayList3.setA(30);
checkArrayList3.setB(40);
ArrayList<CheckArrayList> aList = new ArrayList<CheckArrayList>();
aList.add(checkArrayList1);
aList.add(checkArrayList2);
aList.add(checkArrayList3);
System.out.println("size of list before iterate = " + aList.size());
for (CheckArrayList checkArrayList : aList) {
aList.remove(checkArrayList);
System.out.println("inside loop");
}
System.out.println("size of list after iterate = " + aList.size());
} catch (Exception e) {
e.printStackTrace();
}
}
}
why it not showing exception if arralist size equal to 2?