




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
會計學(xué)1cArrayList使用集合組織相關(guān)數(shù)據(jù)預(yù)習(xí)檢查ArrayList中如何添加數(shù)據(jù)?定義泛型集合時的特殊語法符號?第2頁/共39頁第1頁/共39頁本章任務(wù)實現(xiàn)員工信息管理實現(xiàn)員工考勤管理第3頁/共39頁第2頁/共39頁理解集合的概念熟練使用集合訪問數(shù)據(jù)理解泛型的概念熟練使用各種泛型集合本章目標(biāo)第4頁/共39頁第3頁/共39頁數(shù)組的局限性SE[
]engineers=newSE[3];engineers[0]=newSE();engineers[1]=newSE();……如果每個部門的人數(shù)不固定部門中來了一個新同事調(diào)整大小困難增加元素困難能否動態(tài)的維護(hù)一個集合?重新定義數(shù)組3個工程師對象組成的集合數(shù)組長度定義很大第5頁/共39頁第4頁/共39頁ArrayList是一個可動態(tài)維護(hù)長度的集合可維護(hù)動態(tài)長度的集合新增元素可刪除元素可訪問單個元素objectobjectobjectobject0123索引(下標(biāo))object40123ArrayList自動調(diào)整索引通過索引訪問第6頁/共39頁第5頁/共39頁ArrayList的初始化usingSystem.Collections;…ArrayListengineers=newArrayList();ArrayListengineers=newArrayList(5)可以指定長度引入命名空間實例化一個對象常見錯誤未引入命名空間定義時未實例化引入System.Collections命名空間實例化ArrayList對象第7頁/共39頁第6頁/共39頁ArrayList添加元素intAdd(Objectvalue)//添加一個對象到集合的末尾ArrayListengineers=newArrayList();SEjack=newSE();jack.Name="王小毛";……engineers.Add(jack);創(chuàng)建工程師對象添加對象到集合連續(xù)添加三個工程師對象并獲取集合元素的數(shù)目返回索引engineers.Count獲取元素數(shù)目建立部門工程師集合演示示例:向集合添加元素第8頁/共39頁第7頁/共39頁訪問ArrayList元素(類型)ArrayList[index]
//按指定索引(下標(biāo))取得對象SEengineer=(SE)
engineers[0];MessageBox.Show(engineer.SayHi());…按索引取值轉(zhuǎn)換為工程師對象需要類型轉(zhuǎn)換獲取集合元素,并執(zhí)行問好演示示例:訪問集合元素第9頁/共39頁第8頁/共39頁ArrayList的遍歷foreach(Objectobj
inengineers){SEseForeach=(SE)obj;Console.WriteLine(seForeach.Name);}通過對象遍歷王小毛周新雨張燁可以使用和數(shù)組類似的方式for(inti=0;i<engineers.Count;i++){SEseFor=(SE)engineers[i];Console.WriteLine(seFor.Name);}foreach方式類型轉(zhuǎn)換演示示例:遍歷集合元素第10頁/共39頁第9頁/共39頁刪除ArrayList的元素ArrayList.Remove(對象名)//刪除指定對象名的對象ArrayList.RemoveAt(index)//刪除指定索引的對象ArrayList.Clear()//清除集合內(nèi)的所有元素engineers.RemoveAt(0);engineers.Remove(ema);MessageBox.Show(string.Format("部門共包括{0}個工程師。",
engineers.Count.ToString()));SEleave=(SE)engineers[0];MessageBox.Show(leave.SayHi());通過索引刪除元素剩余的元素會自動調(diào)整索引通過指定對象刪除元素第11頁/共39頁第10頁/共39頁常見錯誤2-1//…//添加元素engineers.Add(jack);engineers.Add(joe);engineers.Add(ema);//刪除元素engineers.RemoveAt(0);engineers.RemoveAt(1);engineers.RemoveAt(2);運行這段代碼會發(fā)生錯誤?演示示例:常見錯誤1索引會自動調(diào)整,刪除兩個元素后,不再有索引“2”第12頁/共39頁第11頁/共39頁常見錯誤2-2//定義三個SE對象(省略)SEse2=newSE();
se2.Name="王小毛";se2.Age=26;……engineers.Add(se2);engineers.Remove(se2);//打印集合數(shù)目…定義一個對象與前面定義的jack對象屬性值相同Remove(se2),能否刪除jack對象?演示示例:常見錯誤2第13頁/共39頁第12頁/共39頁小結(jié)學(xué)生類Student已定義,屬性為:Name、Age使用ArrayList存儲學(xué)生集合添加兩個學(xué)生(周杰倫,22;楊伊,21)使用for和foreach遍歷學(xué)生信息參考答案第14頁/共39頁第13頁/共39頁ArrayList通過索引獲取對象為什么使用哈希表是否能夠通過關(guān)鍵字獲取該對象呢?動態(tài)可維護(hù)長度可通過關(guān)鍵字檢索C#提供另一種集合集合:HashtableSEengineer=(SE)
engineers[0];ArrayList中元素頻繁變化,跟蹤元素下標(biāo)很困難第15頁/共39頁第14頁/共39頁什么是HashTableArrayList每個元素對應(yīng)一個索引Hashtable通常稱為哈希表根據(jù)鍵(Key)可以查找到相應(yīng)的值(Value)objectobjectobjectobjectobject0123…ArrayList索引KeyValueKeyValueKeyValueKeyValueKeyValueHashtable值鍵鍵和值一一對應(yīng)第16頁/共39頁第15頁/共39頁使用哈希表Hashtableengineers=newHashtable();
engineers.Add(jack.ID,
jack);添加元素KeyValueSEse2=(SE)engineers["000"];se2.SayHi();通過key獲取元素sengineers.Remove("000");…通過key刪除元素給哈希表添加元素獲取哈希表的元素刪除哈希表的元素需要類型轉(zhuǎn)換演示示例:哈希表操作第17頁/共39頁第16頁/共39頁哈希表的遍歷foreach(Objectobjinengineers.Values){SEse=(SE)obj;Console.WriteLine(se.Name);}如何遍歷一個哈希表?KeyValueKeyValueKeyValueKeyValueKeyValueValues不能遍歷整個對象,而是遍歷Valuesforeach(Objectobjinengineers.Keys){Console.WriteLine((string)obj);}可以遍歷Keys第18頁/共39頁第17頁/共39頁小結(jié)刪除一個ArrayList元素有幾種方法?Hashtable和ArrayList的主要區(qū)別是什么?第19頁/共39頁第18頁/共39頁類型安全2-1……PMpm=newPM();pm.Name="蓋茨";pm.Id="8230";……engineers.Add(jack);engineers.Add(joe);engineers.Add(ema);engineers.Add(pm);//添加一個項目經(jīng)理對象能否加入一個PM對象?foreach(Objectobjinengineers){
SEengineer=(SE)obj;
MessageBox.Show(engineer.SayHi());}遍歷這個集合是否有問題?考慮出現(xiàn)的問題演示示例:類型安全第20頁/共39頁第19頁/共39頁類型安全2-2SE集合王小毛周新雨張燁蓋茨添加對象遍歷集合,轉(zhuǎn)換為SE對象對象存儲不易控制類型轉(zhuǎn)換容易出錯!!!PM對象運行錯誤第21頁/共39頁第20頁/共39頁使用List<T>加強(qiáng)類型安全使用List<T>……List<SE>engineers=newList<SE>();engineers.Add(jack);engineers.Add(joe);engineers.Add(ema);engineers.Add(pm);//添加一個項目經(jīng)理對象……將SE對象加入工程師集合編譯出錯泛型集合演示示例:泛型集合List保證類型安全第22頁/共39頁第21頁/共39頁什么是泛型集合泛型<T>最常見的用途是創(chuàng)建集合類泛型集合可以約束集合內(nèi)的元素類型典型泛型集合List<T>,Dictionary<K,V><T>、<K,V>表示該泛型集合中的元素類型List<SE>SE對象PM對象允許添加不允許添加SE對象無需轉(zhuǎn)換類型第23頁/共39頁第22頁/共39頁使用List<T>泛型集合命名空間:System.Collections.Generic創(chuàng)建List<T>泛型集合遍歷List<SE>engineers=newList<SE>();foreach(SEseinengineers){MessageBox.Show(se.SayHi());}只能保存SE對象無需類型轉(zhuǎn)換演示示例:泛型集合List<T>操作VS2010自動引入List<T>的訪問方式與ArrayList類似第24頁/共39頁第23頁/共39頁List<T>與ArrayList訪問List<T>與ArrayList的對比是否有哈希表那樣存儲Key和Value形式的泛型集合呢?異同點
List<T>
ArrayList不同點增加元素時類型嚴(yán)格檢查可以增加任何類型添加和讀取值類型元素時,無需裝箱拆箱添加和讀取值類型元素時,需要裝箱拆箱相同點通過索引訪問集合的元素添加對象方法相同通過索引刪除元素第25頁/共39頁第24頁/共39頁Dictionary<K,V>概述Dictionary<K,V>通常稱為字典<K,V>約束集合中元素類型編譯時檢查類型約束無需裝箱拆箱操作與哈希表操作類似第26頁/共39頁第25頁/共39頁Dictionary<K,V>的使用engineers.Add(jack.ID,jack);…SEengineer=engineers["000"];…engineers.Remove("000");…添加一對Key/Value通過Key獲取元素通過Key刪除元素//Dictionary<string,SE>方式foreach(SEseinengineers.Values){MessageBox.Show(se.SayHi());}遍歷Values演示示例:泛型集合Dictionary操作Dictionary<string,SE>engineers
=newDictionary<string,SE>();Key存儲String類型Value存儲SE類型利用Dictionary<K,V>存儲工程師列表第27頁/共39頁第26頁/共39頁Dictionary<K,V>與哈希表訪問Dictionary<K,V>與哈希表的對比異同點
Dictionary<K,V>Hashtable不同點增加元素時類型嚴(yán)格檢查可以增加任何類型無需裝箱拆箱需要裝箱拆箱相同點通過Key獲取Value添加對象方法相同遍歷方法相同第28頁/共39頁第27頁/共39頁泛型泛型操作的數(shù)據(jù)類型被定義為一個參數(shù)泛型類如何選中ComboBox中的一項后,獲得對應(yīng)的一個對象classComboBoxItem<T>{privatestring_itemText;//顯示的文字publicstringItemText{get{return_itemText;}set{_itemText=value;}}privateT_itemValue;//實際的對象publicTItemValue{get{return_itemValue;}set{_itemValue=value;}}}演示示例:泛型類第29頁/共39頁第28頁/共39頁泛型的重要性泛型的重要性泛型是未來的主流技術(shù)之一解決了很多需要繁瑣操作的問題提供了更好的類型安全性CLR支持泛型第30頁/共39頁第29頁/共39頁指導(dǎo)——新增員工和顯示列表2-1訓(xùn)練要點:泛型集合List<T>需求說明:實現(xiàn)員工信息和考勤管理系統(tǒng)實現(xiàn)新增員工(員工ID唯一)使用DataGridView控件展示員工列表第31頁/共39頁第30頁/共39頁指導(dǎo)——新增員工和顯示列表2-2實現(xiàn)思路:實現(xiàn)新增功能實現(xiàn)展示員工列表功能難點指導(dǎo):向集合List<T>中新增對象使用maintanceType標(biāo)識操作(1:新增、0:修改)驗證:工號不能重復(fù)使用DataGridView控件展示集合信息完成時間:30分鐘this.dgvProgrammer.DataSource=newBindingList<SE>(list);第32頁/共39頁第31頁/共39頁練習(xí)——模糊查詢和信息刪除需求說明:實現(xiàn)刪除員工信息實現(xiàn)根據(jù)員工工號進(jìn)行模糊查詢完成時間:20分鐘第33頁/共39頁第32頁/共39頁共性問題集中講解常見調(diào)試問題及解決
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賣地建房合同范本
- 小吃機(jī)器租賃合同范本
- 宿舍房屋租賃合同范本
- 辣椒種植基地生態(tài)農(nóng)業(yè)與鄉(xiāng)村旅游融合發(fā)展合同
- 二零二五年度母子公司管理費支付、監(jiān)督及改進(jìn)合同范本
- 二零二五年度房屋買賣合同解除與土地使用權(quán)變更協(xié)議
- 二零二五年度車輛牌照借用與停車設(shè)施租賃合同
- 二零二五年度現(xiàn)代化畜牧養(yǎng)殖場地租賃協(xié)議
- 2025年度語言培訓(xùn)機(jī)構(gòu)外籍教師聘用合同
- 二零二五年度房屋買賣稅費墊付借款協(xié)議
- 最大攝氧量的測定
- 人教版四年級上冊脫式計算200題及答案
- 國網(wǎng)充電站運維安全管理
- 青海2024年01月青海省省直機(jī)關(guān)遴選公務(wù)員69人^2024年國家公務(wù)員考試考試大綱歷年真題筆試歷年高頻考點難、易錯點薈萃附答案帶詳解
- 無產(chǎn)權(quán)房屋買賣合同模板
- 一年級美術(shù)課后輔導(dǎo)教案-1
- 六年級上冊數(shù)學(xué)200道口算題
- 能斷金剛:超凡的經(jīng)營智慧
- 甲狀旁腺疾病匯報演示課件
- 智慧社區(qū)建設(shè)中的智能化醫(yī)療與康養(yǎng)服務(wù)
- 大學(xué)英語精讀課文第三冊
評論
0/150
提交評論