java - IllegalStateException when removing an object with iterator -


i've been strugling bug since while , don't know problem is. code :

arraylist<string> ltmpindicsdesc = new arraylist<string>(indicsdesc); arraylist<string> ltmpindicsavailablemark = new arraylist<string>(indicsavailablemark);     (iterator<string> itindicsdesc = ltmpindicsdesc.iterator(); itindicsdesc.hasnext();) {         string stmpindicsdesc = itindicsdesc.next();         (iterator<string> itindicsavailablemark = ltmpindicsavailablemark.iterator(); itindicsavailablemark.hasnext();) {             string stmpindicsavailablemark = itindicsavailablemark.next();             if (stmpindicsdesc.touppercase().equals(stmpindicsavailablemark.touppercase())) {                 itindicsdesc.remove();             }         }     } 

it raise illegalstateexception on remove call.

i've been wondering if problem appear because removing last item of list seems bug in middle of process.

can guys give me explanation please ?

you removing element ltmpindicsdesc list inside inner loop. means inner loop might try remove same element twice, explain exception got. should break inner loop after removing element:

for (iterator<string> itindicsdesc = ltmpindicsdesc.iterator(); itindicsdesc.hasnext();) {     string stmpindicsdesc = itindicsdesc.next();     (iterator<string> itindicsavailablemark = ltmpindicsavailablemark.iterator(); itindicsavailablemark.hasnext();) {         string stmpindicsavailablemark = itindicsavailablemark.next();         if (stmpindicsdesc.touppercase().equals(stmpindicsavailablemark.touppercase())) {             itindicsdesc.remove();             break; // added         }     } } 

Comments