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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么removeAll()會(huì)刪除所有相同的元素?

3:HTML

1:數(shù)據(jù)結(jié)構(gòu)

2:C語(yǔ)言

4:數(shù)學(xué)

5:匯編語(yǔ)言英語(yǔ)

1:數(shù)據(jù)結(jié)構(gòu)


修改后:--刪除后的課程列表--

3:HTML

4:數(shù)學(xué)

5:匯編語(yǔ)言英語(yǔ)



這是我刪除后控制臺(tái)顯示的,為什么我只讓刪除下表1和2的數(shù)據(jù),卻連下表5的元素也刪除了。只是因?yàn)橄卤?和5的元素內(nèi)容相同而已。我修改下表5的內(nèi)容后再執(zhí)行刪除就沒(méi)有問(wèn)題。下面是代碼:


Course[] crs = { (Course) (coursesToSelect.get(2)), (Course) (coursesToSelect.get(1)) };

coursesToSelect.removeAll(Arrays.asList(crs));

System.out.println("--刪除后的課程列表--");

testForeach();


正在回答

3 回答

上面那個(gè)原因再補(bǔ)充一下,雖然它比較的是地址,但是用的不是 == ,用的equals方法,不要疑惑,因?yàn)榧侠锓诺氖菍?duì)象的地址,不信你可以輸出來(lái)看看,別重寫(xiě)Course的toString方法,然后用courseofselect.toString()方法輸出。。所以上面我說(shuō)的兩種情況的結(jié)果是不一樣的,這是我看ArrayList類里的removeAll方法得出的結(jié)論,如果我有哪地方說(shuō)錯(cuò)了還望各位網(wǎng)友路過(guò)的話有時(shí)間的話指出,謝謝噻~(單詞大小寫(xiě)的錯(cuò)誤就不要指出了,主要我在自己電腦上寫(xiě)的時(shí)候?qū)懙腸ourseofselect)

2 回復(fù) 有任何疑惑可以回復(fù)我~

跟你添加到集合中的元素有關(guān)。

如果你是這樣添加的,Course c1 = new ("1","數(shù)據(jù)結(jié)構(gòu)"); courseofselect.add(c1);courseofselect.add(c1);這樣的話你刪除就會(huì)把你所添加到集合中的值為數(shù)據(jù)結(jié)構(gòu)這個(gè)Course對(duì)象都刪除。因?yàn)槟闾砑拥氖窍嗤瑑?nèi)存地址的對(duì)象,也就是一個(gè)對(duì)象。

如果你是這樣添加的,Course c1 = new ("1","數(shù)據(jù)結(jié)構(gòu)");Course c2 = new ("1","數(shù)據(jù)結(jié)構(gòu)");?courseofselect.add(c1);courseofselect.add(c2);這樣你刪除的話就只會(huì)刪除你指定位置的元素。

原因是,ArrayList對(duì)象的removeall方法刪除元素,它內(nèi)部調(diào)用的是batchRemove方法,利用的是元素的內(nèi)存地址比較去刪除元素。


2 回復(fù) 有任何疑惑可以回復(fù)我~
Course[]?crs?=?{?(Course)?(coursesToSelect.get(2)),?(Course)?(coursesToSelect.get(1))?};
coursesToSelect.removeAll(Arrays.asList(crs));

System.out.println("--刪除后的課程列表--");
testForeach();


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

為什么removeAll()會(huì)刪除所有相同的元素?

我要回答 關(guān)注問(wèn)題
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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