C#_List典型用法詳解_第1頁
C#_List典型用法詳解_第2頁
C#_List典型用法詳解_第3頁
C#_List典型用法詳解_第4頁
C#_List典型用法詳解_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、c#ListvT用法所屬命名空間:System.Collections.GenericusingSystem.Collections.Generic;publicclassList:IList,ICollection,IEnumerable,IList,ICollection,IEnumerableListvT類是ArrayList類的泛型等效類。該類使用大小可按需動態(tài)增加的數(shù)組實現(xiàn)IList泛型接口。泛型的好處:它為使用c#語言編寫面向?qū)ο蟪绦蛟黾恿藰O大的效力和靈活性。不會強行對值類型進(jìn)行裝箱和拆箱,或?qū)σ妙愋瓦M(jìn)行向下強制類型轉(zhuǎn)換,所以性能得到提高。性能注意事項:在決定使用IListvT還

2、是使用ArrayList類(兩者具有類似的功能)時,記住IList類在大多數(shù)倩況下執(zhí)行得更好并且是類型安全的。如果對IListvT類的類型T使用引用類型,則兩個類的行為是完全相同的。但是,如果對類型T使用值類型,則需要考慮實現(xiàn)和裝箱問題。用微軟的話講:添加到ArrayList中的任何引用或值類型都將隱式地向上強制轉(zhuǎn)換為Objecto如果項是值類型,則必須在將其添加到列表中時進(jìn)行裝箱操作,在檢索時進(jìn)行取消裝箱操作。強制轉(zhuǎn)換以及裝箱和取消裝箱操作都會降低性能;在必須對大型集合進(jìn)行循壞訪問的情況下,裝箱和取消裝箱的影響非常明顯/1.List的基礎(chǔ).常用方法:聲明:1、ListmList=newLis

3、t();T為列表中元素類型,現(xiàn)在以string類型作為例子E.g.:ListmList=newList();2、ListtestList=newList(IEnumerablecollection);以一個集合作為參數(shù)創(chuàng)建ListstringtemAiT=Ha”,MHunter,MTomH,nLilyn,uJayn,Kukii0,nLocun;ListtestList=newList(temAiT);添加元素:1、List.Add(Titem)添加一個元素E.g.:mList.Add(”John);2SList.AddRange(IEnumerablecollection)添加一組元素stri

4、ngtemAiT=nHan/,Hunter,”Tom舄nLily,nJayH,uJim,nKiikiVuLocun;3SInsert(intindex,Titem);在index位置添加一個元素mList.Insert(l,nHein);遍歷List中元素:fbreach(TelementillniList)T的類型與mList聲明時一樣Console.WriteLiiie(element);foreach(stringsillmList)Console.WriteLiiie(s);刪除元素:1、List.Remove(Titem)刪除一個值mList.Remove(MHuntern);2、L

5、ist.RemoveAt(intindex);刪除下標(biāo)為index的元素mListRemoveAt(O);3、List.RemoveRange(intindexntcount);從下標(biāo)index開始,刪除count個元素mList.RemoveRange(3,2);注刪除某元素后,其后面的元素下標(biāo)H動跟進(jìn)判斷某個元素是否在該List中:List.Contains仃item)返回true或false,很實用if(mList.Contams(nHunterM)Console.WriteLiiie(nThereisHunterillthelist”);elseniList.Add(MHunterM)

6、;Console.WriteLiiie(MAddHuntersuccessfully.”);給ListS元素排序:ListSort()默認(rèn)是元素第一個字母按升序iiiList.Sort();給List里面元素順序反轉(zhuǎn):List.Reverse()可以與List.Sort()配合使用,達(dá)到想要的效果iiiList.Sort();List清空:List.Clear()mList.Clear();獲得List中元素數(shù)目:ListCount()返回int值iiitcount=niList.Count();Console.WriteLiiie(MThenumofelementsillthelist:”+

7、count);或者List.Count;2.List的進(jìn)階.強大方法:舉例用的List:stringteniAiT=Tom”,Lily,Jay”,Jim”,Kuku,Locu;mList.AddRange(teniAiT);ListFind方法:搜索與指定謂詞所定義的條件相匹配的元素,并返回整個List中的第一個匹配元素。publicTFiiid(Predicatematch);Predicate是對方法的委托,如果傳遞給它的對象與委托中定義的條件匹配,則該方法返回true。當(dāng)前List的元素被逐個傳遞給Predicate委托,并在List中向前移動,從第一個元素開始,到最后一個元素結(jié)束。當(dāng)找

8、到匹配項時處理即停止。Predicate可以委托給一個函數(shù)或者一個拉姆達(dá)表達(dá)式委托給拉姆達(dá)表達(dá)式:stringlistFind=mList.Fiiid(name=/name是變応,代表的是mList中元素,IT己設(shè)定if(name.Length3)retiuntrue;retiunfalse;);Console.WriteLine(listFiiid);輸出是Hiuiter委托給一個函數(shù):stringlistFiiidl=mList.Fiiid(ListFind);委托給ListFiiid函數(shù)Console.WriteLine(listFiiid);輸出是HiuiterListFind函數(shù):p

9、ublicboolListFiiid(striiigname)if(name.Length3)retiuntme;retiwnfalse;這兩種方法的結(jié)果是一樣的。List.FindLast方法:搜索與指定謂詞所定義的條件相匹配的元素,并返回整個List中的最后一個匹配元素。publicTFiiidLast(Predicatematch);用法與List.Find相同。List.TrueForAII方法:確定是否List中的每個元素都與指定的謂詞所定義的條件相匹配。publicboolTmeForAll(Predicatematch);委托給拉姆達(dá)表達(dá)式:boolflag=mList.TmeF

10、orAll(name=if(name.Length3)retiuntme;elseretiunfalse;);Console.WriteLine(uTrueforall:+flag);/flag值為fhlse委托給一個函數(shù)/這里用到上面的ListFind函數(shù):Eg:boolflag=niList.TmeForA11(ListFiiid);委托給ListFiiid函數(shù)Console.WriteLine(HTrueforall:+flag);/flag值為false這兩種方法的結(jié)果是一樣的。List.FindAII方法:檢索與指定謂詞所定義的條件相匹配的所有元素。publicListFiiidAl

11、l(Predicatematch);E.g.:ListsubList=mList.FiiidA11(ListFiiid);/委托給ListFiiid函數(shù)foreach(stringsinsubList)Console.WriteLiiie(MelementinsubList:+s);這時subList存儲的就是所有長度大丁3的元素List.Take(n):獲得前n行返回值為IEnumetablefT的類型與List的類型一樣E.g.:IEnumerabletakeList=mList.Take(5);fbreach(stringsilltakeList)Console.WriteLine(Me

12、lementintakeList:11+s);這時takeList存放的元素就是mList中的前5個List.Where方法:檢索與指定謂詞所定義的條件相匹配的所有元素。跟List.FindAll方法類似。E.g.:IEnumerablewhereList=mList.AVliere(name=if(name.Length3)retiuntme;elseretiunfalse;);foreach(stringsinsubList)Console.WriteLiiie(nelementillsubList:n+s);這時subList存儲的就是所有長度大丁3的元素List.RemoveAlIJi

13、法:移除與指定的謂詞所定義的條件相匹配的所有兀素。publiciiitRemoveAll(Predicatematch);niList.RemoveAll(name=if(name.Length3)retmntme;elseretmnfalse;foreach(stringsillmList)Console.WriteLiiie(MelementillniList:H+s);這時mList存儲的就是移除長度大丁3之后的元素。(PS:如有問題請發(fā)送E-mail至: HYPERLINK mailto:)補充:比如要實現(xiàn)一個int類型的動態(tài)二維數(shù)組。耍增加一行就matrix.add(newList();某行要增加數(shù)據(jù)就matrixn.add(i);但是不建議這么操作。Listmatrix=newListListvint();matrix.Add(newList(

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論