3 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)使用Iterator來迭代訪問Collection集合時(shí)(ArrayList實(shí)現(xiàn)了Collection接口),Collection集合元素是不允許直接增刪的,要使用Iterator對(duì)象的it.remove()方法才行,否則就會(huì)拋出.ConcurrentModificationException異常

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
想遍歷又想刪除,你應(yīng)該倒著來
ArrayList<String> list = new ArrayList<String>(); list.add("one"); int n = list.size(); for (int i = n - 1; i >= 0; i--) { if (list.get(i).equals("one")) { list.remove(i); } } System.out.println(list);

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
ArrayList在遍歷時(shí)刪除某個(gè)元素后需要立即break, 否則就會(huì)拋出這個(gè)異常。
類的源碼木有看,可能是刪除后對(duì)象結(jié)構(gòu)改變,而你還在以刪除前的結(jié)構(gòu)遍歷輸出,刪除后對(duì)象長度改變,導(dǎo)致遍歷時(shí)數(shù)組越界引發(fā)異常,而在遍歷過程中添加元素是不會(huì)造成這個(gè)后果滴,它在過程當(dāng)中也不會(huì)輸出來。
添加回答
舉報(bào)