第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么再添加一個(gè)元素【如 al.add ("two");】反而沒有拋出 異常了?

為什么再添加一個(gè)元素【如 al.add ("two");】反而沒有拋出 異常了?

aluckdog 2023-03-31 18:14:54
測(cè)試當(dāng) List 下只有一個(gè)元素時(shí),在 Iterator 遍歷過程中使用非 iterator.remove () 方式刪除public class HashMapTest {    public static void main(String[] args) {    ArrayList<String> al = new ArrayList<String>();    al.add("one");    System.out.println(al);    Iterator<String> it = al.iterator();    while (it.hasNext()) {        System.out.println(it.next());        al.remove("one");    }    }}運(yùn)行結(jié)果:拋出 java.util.ConcurrentModificationException 異常------------------再添加一個(gè)元素【如 al.add ("two");】反而沒有拋出 java.util.ConcurrentModificationException 異常了。運(yùn)行結(jié)果:[one, two]one-----------------真是奇怪?!
查看完整描述

3 回答

?
慕無忌1623718

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異常

查看完整回答
反對(duì) 回復(fù) 2023-04-03
?
HUH函數(shù)

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);


查看完整回答
反對(duì) 回復(fù) 2023-04-03
?
BIG陽

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ì)輸出來。


查看完整回答
反對(duì) 回復(fù) 2023-04-03
  • 3 回答
  • 0 關(guān)注
  • 162 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)