公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#】如何從List集合中刪除對(duì)象

admin
2021年3月10日 9:10 本文熱度 3951

這個(gè)問(wèn)題看似好像挺簡(jiǎn)單挺幼稚的,然而就這個(gè)幼稚的問(wèn)題還曾經(jīng)困擾過(guò)我一陣呢,其實(shí)犯這個(gè)錯(cuò)誤的根本緣由是咱們對(duì)于基礎(chǔ)知識(shí)的理解和掌握上還有不足的表現(xiàn),基本功有些人老是以為不重要,認(rèn)為更多的擴(kuò)大學(xué)習(xí)的廣度才是最重要的,我認(rèn)為這是很容易犯的,同時(shí)也是很致命的錯(cuò)誤觀點(diǎn)!java

對(duì)基礎(chǔ)知識(shí)掌握不牢靠,或理解不深入,寫(xiě)出的代碼必然會(huì)有40%的幾率是錯(cuò)誤的、低效的,一段代碼不是說(shuō)沒(méi)有編譯錯(cuò)誤就必定是對(duì)的,不是說(shuō)簡(jiǎn)單的運(yùn)行下就必定是對(duì)的,優(yōu)秀的代碼,是經(jīng)得起“刀山火海”般的考驗(yàn)的(“多線程、效率、安全”這三坐大山)。編程

因此重要性,我就再也不強(qiáng)調(diào)了,相信說(shuō)完后,地球人都能懂個(gè)人意思,那么下面就來(lái)看看這個(gè)有趣的現(xiàn)象吧。安全

先看看以下代碼:多線程

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestList {
	void init(List<Integer> list) {
		list.clear();
		for (int i = 0; i < 10; i++) {
			list.add(i + 1);
		}
	}
	void remove(List<Integer> list) {
		for (int i = 0; i < 5; i++) {
			list.remove(i);
		}
	}
	void removeTwo(List<Integer> list) {
		for (int i : list) {
			if (i < 6) {
				list.remove(i);
			}
		}
	}
	void removeThree(List<Integer> list) {
		for (Iterator<Integer> iter = list.iterator(); iter.hasNext();) {
			int i = iter.next();
			if (i < 6) {
				iter.remove();
			}
		}
	}
	public static void main(String[] args) {
		TestList testList = new TestList();
		List<Integer> list = new ArrayList<Integer>();
		// 第一種方法
		testList.init(list);
		testList.remove(list);
		System.out.println(list);
		// 第二種方法
		try {
			testList.init(list);
			testList.removeTwo(list);
			System.out.println(list);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		// 第三種方法
		testList.init(list);
		testList.removeThree(list);
		System.out.println(list);
	}
}

運(yùn)行的結(jié)果以下:學(xué)習(xí)

[2, 4, 6, 8, 10]spa

java.util.ConcurrentModificationException線程

at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)code

at java.util.AbstractList$Itr.next(AbstractList.java:343)orm

at com.TestList.removeTwo(TestList.java:23)對(duì)象

at com.TestList.main(TestList.java:60)

[6, 7, 8, 9, 10]

上面代碼邏輯很簡(jiǎn)單,就是將List集合里的前5個(gè)對(duì)象刪除掉,然而結(jié)果倒是至關(guān)不同:第一個(gè)是錯(cuò)誤的結(jié)果,第二個(gè)直接報(bào)異常,只有第三個(gè)是咱們想要的結(jié)果!


那么這是為何呢?其實(shí)主要緣由來(lái)自于List中的remove()方法。咱們來(lái)分析一下:

第一種方法:

第一次執(zhí)行完remove方法后,并不像咱們簡(jiǎn)單想象的那樣就把第一個(gè)刪除了,“1”這個(gè)對(duì)象被刪除了沒(méi)錯(cuò),可是當(dāng)被刪除后List中“2”之后的9個(gè)對(duì)象的index索引也變了,都比原來(lái)的值減一,換句話說(shuō)就是剩下的9個(gè)對(duì)象的index值為從0到8,而不是原來(lái)的從1到9了,那么第二次執(zhí)行remove方法時(shí),此時(shí)list.remove(1)刪除的就是“3”這個(gè)對(duì)象(“3”的index值為1),而不是咱們想象的刪除“2”對(duì)象。


第二種方法:

緣由跟上面同樣,致使List的next()方法內(nèi)部出現(xiàn)modCount和expectedModCount不一致致使拋出異常。


因此咱們這里建議你們采用第三種方法來(lái)刪除List集合中某一個(gè)對(duì)象,這樣作是最簡(jiǎn)單且容易記憶的。那第一種方法和第二種方法有沒(méi)有解決的辦法呢?目前我知道第一種方法的解決辦法,第二種應(yīng)該是無(wú)解的(由于語(yǔ)法結(jié)構(gòu)致使)。


第一種方法的改進(jìn)措施:

void remove(List<Integer> list) {
		int num = list.size() - 5;
		for (int i = 0; i < num; i++) {
			list.remove(i);
			i--;
			num--;
		}
	}

我想你編程時(shí)間長(zhǎng)了,也會(huì)偶爾遇到這些相似簡(jiǎn)單卻讓你頭疼的問(wèn)題,遇到這些問(wèn)題首先檢查下本身的邏輯是否有問(wèn)題,若是邏輯沒(méi)有問(wèn)題就檢查下代碼的結(jié)構(gòu)是否有問(wèn)題吧,這就是所謂的基本功,之后我也會(huì)慢慢的增強(qiáng)鞏固本身基本功方面的能力,一塊兒加油吧。


該文章在 2021/3/10 9:10:04 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91精品国产一区二区无码思瑞 | 国产精品一区二区国产 | 国产一级av不卡毛片 | 国产一区在线播放网址 | 国产精品成人免费视频 | 国产原创麻豆顾美玲在线观看 | av亚洲欧洲日产国码无码 | 国产无码视频在线播放 | 国产自慰在线免费观看 | 国产精品午夜一级毛片精品 | 国产精品无码av片在线观看播 | 成人午夜小视频手机在线看 | 成人免费无码精品国产91 | 国产精品午夜爆乳美女视频 | 国产成人av综合色 | 国产美女裸体无遮掩免费牛牛 | 国产成人免费观看在线视频 | 国产一区二区三区福利在线观看 | 国产91丝袜在线播放九色 | 国产aⅴ视频一区二区三区 国产aⅴ天堂无码一区二区三区 | 丰满人妻一区二区三区性色 | 91在线无码精品国产三年 | 国产成人av在线免播放观看新 | 东京热高清中文字幕 | 国产自产拍精品视频免 | 国产福利精品一区二区无码 | 国产日韩一区二区在线观看 | 国产三级农村妇女在线看系列 | 国产欧美一级纯黄色片 | 3d动漫精品啪啪一区二区 | 2025久久国产免费 | 91精品福利一区二区三区野战 | 91精品无人区麻豆 | 成人午夜电影免费完整在线看 | 按摩调教在线观看 | 国产人与禽zoz0性伦 | 国产aⅴ一区二 | 成年人深夜福利 | 91国在线啪精品一区 | 国产精品国产三级国产aⅴ9色 | 国产精品欧美亚洲日本综合 |