csharpnet課件_第1頁
csharpnet課件_第2頁
csharpnet課件_第3頁
csharpnet課件_第4頁
csharpnet課件_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、csharpnet1第四章第四章 數(shù)組和集合數(shù)組和集合c#.net程序設(shè)計c#.net程序設(shè)計csharpnet本章主要內(nèi)容本章主要內(nèi)容l集合類型接口集合類型接口ienumerable、icollection、ilist和和idictionaryl數(shù)組數(shù)組array、arraylist和和list泛型類泛型類lhashtable類和類和dictionary泛型類泛型類lsortedlist和和sortedlist泛型類泛型類l隊列隊列queue類和類和queue泛型類泛型類,堆棧堆棧stack類和類和stack 泛型類泛型類c#.net程序設(shè)計csharpnet集合類型概述集合類型概述l集合通

2、??梢苑譃槌S眉霞贤ǔ?梢苑譃槌S眉? 專用集合等類型:專用集合等類型:l常用集合。常用集合有泛型和非泛型之分。非泛常用集合。常用集合有泛型和非泛型之分。非泛型集合是以型集合是以object 類型為元素集合,如哈希表類型為元素集合,如哈希表hashtable、隊列、隊列queue、堆棧、堆棧stack、和列表、和列表arraylist,。泛型集合類型是非泛型類型的直接。泛型集合類型是非泛型類型的直接模擬。泛型集合包含模擬。泛型集合包含arraylist的泛型版的泛型版list,hashtable的泛型版的泛型版dictionary集合等。集合等。 l專用集合。這些集合都具有專門的用途,通

3、常用專用集合。這些集合都具有專門的用途,通常用于處理特定的元素類型,如于處理特定的元素類型,如 stringdictionary是是將鍵和值強(qiáng)類型化為字符串而不是將鍵和值強(qiáng)類型化為字符串而不是object來實來實現(xiàn)現(xiàn)hashtable集合類型。集合類型。集合類型集合類型c#.net程序設(shè)計csharpnetienumerable接口接口l集合是基于集合是基于ienumerable接口、接口、icollection接口、接口、ilist接口、接口、idictionary接口,或其泛型集合中的相應(yīng)接口,或其泛型集合中的相應(yīng)接口,而接口,而ienumerable接口、接口、icollection接口

4、是大部接口是大部分集合類所共同實現(xiàn)的。下面分別介紹分集合類所共同實現(xiàn)的。下面分別介紹ienumerable接口、接口、icollection接口。接口。l第一種集合是實現(xiàn)第一種集合是實現(xiàn)ienumerable接口的集合類,接口的集合類,ienumerable接口只有一個公共方法:接口只有一個公共方法:ienumerator getenumerator() 該方法返回一個用于該方法返回一個用于foreach簡單迭簡單迭代循環(huán)訪問集合的枚舉數(shù)。所有實現(xiàn)了代循環(huán)訪問集合的枚舉數(shù)。所有實現(xiàn)了ienumerable接口的集合類如數(shù)組接口的集合類如數(shù)組array,arraylist集合類型等都集合類型等都

5、可以用于可以用于foreach循環(huán)語句。循環(huán)語句。ienumerator接口的成員接口的成員如下表。如下表。 集合類型集合類型屬性current 獲取集合中的當(dāng)前元素。方法movenext 將枚舉數(shù)推進(jìn)到集合的下一個元素。 方法reset 將枚舉數(shù)設(shè)置為其初始位置,該位置位于集合中第一個元素c#.net程序設(shè)計csharpneticollection 接口icollection 接口繼承ienumerable接口,除了繼承ienumerable接口成員外,還有下表所示的成員。 屬性count 獲取 icollection 中包含的元素數(shù)。屬性issynchronized 獲取一個值,該值指示是

6、否同步對icollection的訪問(線程安全)。屬性syncroot 獲取可用于同步 icollection 訪問的對象。方法copyto 從特定array 索引處開始,將icollection元素復(fù)制到一個array。 集合類型集合類型c#.net程序設(shè)計csharpnetlist 接口接口list 接口表示可按照索引單獨訪問的對象的非泛型集合接口。接口表示可按照索引單獨訪問的對象的非泛型集合接口。ilist 接口繼承了接口繼承了icollection接口和接口和ienumerable接口,接口,ilist是所有是所有非泛型列表的基接口。非泛型列表的基接口。ilist接口的公共屬性與方法接

7、口的公共屬性與方法 如下表如下表:數(shù)組數(shù)組array、arraylist和和list泛型類泛型類屬性isfixedsize 獲取一個值,指示 ilist 是否具有固定大小。屬性isreadonly 獲取一個值,該值指示 ilist 是否為只讀。屬性item 獲取或設(shè)置指定索引處的元素。方法add 將某項添加到 ilist 中。 方法clear 從 ilist 中移除所有項。 方法contains 確定 ilist 是否包含特定值。 方法indexof 確定 ilist 中特定項的索引。 方法insert 將一個項插入指定索引處的 ilist。 方法remove 從 ilist 中移除特定對象的

8、第一個匹配項。 方法removeat 移除指定索引處的 ilist 項。 c#.net程序設(shè)計csharpnet數(shù)組數(shù)組array類類larray 類是所有數(shù)組的基類,提供創(chuàng)建、操作、搜索和類是所有數(shù)組的基類,提供創(chuàng)建、操作、搜索和排序數(shù)組的方法,排序數(shù)組的方法,array 類定義語法如下:類定義語法如下:public abstract class array : icloneable, ilist, icollection, ienumerable。因此。因此array類實現(xiàn)類實現(xiàn)ilist, icollection, ienumerable,icloneable接口,也就是說,接口,也就是

9、說,array類類實現(xiàn)了這些接口的方法成員。實現(xiàn)了這些接口的方法成員。larray類除了類除了copy,copyto外其它常用的方法:外其它常用的方法:larray.clear方法:方法:public static void clear (array array,int index,int length) larray.clone方法是實現(xiàn)方法是實現(xiàn)icloneable接口的方法,接口的方法,clone方法創(chuàng)建數(shù)組方法創(chuàng)建數(shù)組array的淺表副本,數(shù)組的淺表副的淺表副本,數(shù)組的淺表副本僅復(fù)制數(shù)組的元素(無論它們是引用類型還是值類本僅復(fù)制數(shù)組的元素(無論它們是引用類型還是值類型),但不復(fù)制這些引

10、用所引用的對象。新數(shù)組中的型),但不復(fù)制這些引用所引用的對象。新數(shù)組中的引用與原始數(shù)組中的引用指向相同的對象。數(shù)組使用引用與原始數(shù)組中的引用指向相同的對象。數(shù)組使用copy,copyto方法復(fù)制的也是淺表副本。所以這三個方法復(fù)制的也是淺表副本。所以這三個復(fù)制方法得到的復(fù)制的副本都是一樣。復(fù)制方法得到的復(fù)制的副本都是一樣。 數(shù)組數(shù)組array、arraylist和和list泛型類泛型類csharpnetpublic class studentpublic string name;public student(string name)this.name = name;public class cl

11、onecopyarraypublic static void main()student stu0 = new student(student1);student stu1 = new student(student2);student stu2 = new student(student3);student arrstu = new student stu0, stu1, stu2;student arrstuclone = (student)arrstu.clone();/ 克隆數(shù)組student arrstucopy = new studentarrstu.length;array.co

12、py(arrstu,arrstucopy, arrstu.length);/拷貝數(shù)組console.writeline(原來數(shù)組內(nèi)容);printindexandvalues(arrstu);console.writeline(克隆數(shù)組內(nèi)容:);printindexandvalues(arrstuclone);console.writeline(改變克隆數(shù)組內(nèi)容之前);例:演示數(shù)組array的copy和clone方法的使用, clonecopyarray項目代碼:csharpnetconsole.writeline(arrstu2.name: 0, arrstu2.name);console.

13、writeline(arrstuclone2.name: 0, arrstuclone2.name);console.writeline(arrstucopy2.name: 0, arrstucopy2.name);arrstuclone2.name = student2clonenew;/arrstucopy2.name = student2copynew;console.writeline(改變克隆數(shù)組內(nèi)容之后);console.writeline(arrstu2.name: 0, arrstu2.name);console.writeline(arrstuclone2.name: 0,

14、arrstuclone2.name);console.writeline(arrstucopy2.name: 0, arrstucopy2.name);public static void printindexandvalues(array myarray)for (int i = myarray.getlowerbound(0); i = myarray.getupperbound(0); i+)console.writeline(t0:t1, i, myarray.getvalue(i);arrstuclone是使用clone方法復(fù)制的student類對象數(shù)組,arrstucopy是使用c

15、opy方法復(fù)制的student類對象數(shù)組,由于它們都是復(fù)制的淺表副本,所以在三個數(shù)組的引用都指向相同的student類對象數(shù)組。c#.net程序設(shè)計csharpnetarraylist 類類larray用作所有數(shù)組的基類,而用作所有數(shù)組的基類,而arraylist是較為復(fù)雜的數(shù)組。是較為復(fù)雜的數(shù)組。arraylist 類和類和array 類一樣都實現(xiàn)類一樣都實現(xiàn)ilist, icollection, ienumerable, icloneable接口。接口。larraylist類除了所實現(xiàn)的類除了所實現(xiàn)的ilist, icollection, ienumerable, icloneable接口

16、的方法成員,還包含下面主要屬性和方法:接口的方法成員,還包含下面主要屬性和方法:屬性capacity 獲取或設(shè)置 arraylist 可包含的元素數(shù)。方法addrange 將 icollection 的元素添加到 arraylist 的末尾。 方法binarysearch 使用對分檢索算法在已排序arraylist或它的部分中查找特定元素。 方法insertrange 將集合中的某個元素插入 arraylist 的指定索引處。 方法removerange 從 arraylist 中移除一定范圍的元素。 方法setrange 將集合中的元素復(fù)制到 arraylist 中一定范圍的元素上。 方法s

17、ort 對 arraylist 或它的一部分中的元素進(jìn)行排序。 方法toarray 將 arraylist 的元素復(fù)制到新數(shù)組中。 csharpnet使用arraylist類add、addrange和toarray方法的項目arraylistsample代碼: using system;using system.collections;public class samplesarraylist public static void main() arraylist myal = new arraylist();/ 創(chuàng)建和初始化arraylist. myal.add(the);/添加一個元素 m

18、yal.addrange(new string quick, brown, fox, jumped, over, the, lazy, dog );/添加一組元素 printindexandvalues(myal); / 顯示arraylist的值 string myarr = (string)myal.toarray(typeof(string); /將元素復(fù)制數(shù)組 printindexandvalues(myarr); / 顯示數(shù)組內(nèi)容 public static void printindexandvalues(arraylist mylist) int i = 0; foreach (

19、object o in mylist) console.write(t0:t1, i+, o); public static void printindexandvalues(string myarr) for (int i = 0; i myarr.length; i+) console.write(t0:t1, i, myarri); c#.net程序設(shè)計csharpnetlist 泛型類泛型類llist 泛型類是泛型類是 arraylist 類的泛型等效類,表示可通過索引訪問的強(qiáng)類型類的泛型等效類,表示可通過索引訪問的強(qiáng)類型列表。所謂的強(qiáng)類型,是指創(chuàng)建列表列表。所謂的強(qiáng)類型,是指創(chuàng)建列表

20、list時指定集合類型,而不是時指定集合類型,而不是arraylist的的object集合類型,這樣對于值類型的集合類型,這樣對于值類型的list泛型類來說,無需裝泛型類來說,無需裝箱和取消裝箱或轉(zhuǎn)換。箱和取消裝箱或轉(zhuǎn)換。listtsample項目的代碼示例演示項目的代碼示例演示 list 泛型類泛型類:using system;using system.collections.generic;public class example public static void main() /創(chuàng)建創(chuàng)建string的的list泛型實例泛型實例,創(chuàng)建列表時指定集合類型為創(chuàng)建列表時指定集合類型為stri

21、ng list dinosaurs = new list(); console.writeline(ncapacity: 0, dinosaurs.capacity);/顯示顯示list容量容量 dinosaurs.add(tyrannosaurus);/向向list添加添加 dinosaurs.add(amargasaurus); dinosaurs.add(mamenchisaurus); dinosaurs.add(deinonychus);csharpnetdinosaurs.add(compsognathus);foreach (string dinosaur in dinosaur

22、s) console.writeline(dinosaur);console.writeline(ncapacity: 0, dinosaurs.capacity);console.writeline(count: 0, dinosaurs.count);console.writeline(ncontains(deinonychus): 0, dinosaurs.contains(deinonychus);/判斷列表是否包含判斷列表是否包含deinonychusdinosaurs.insert(2, compsognathus);/在位置插入在位置插入compsognathus“foreach

23、 (string dinosaur in dinosaurs) console.writeline(dinosaur);console.writeline(ndinosaurs3: 0, dinosaurs3);/使用位置索引使用位置索引dinosaurs.remove(compsognathus);/刪除刪除compsognathusforeach (string dinosaur in dinosaurs)console.writeline(dinosaur);dinosaurs.trimexcess();/根據(jù)集合數(shù)量縮減容量根據(jù)集合數(shù)量縮減容量console.writeline(ntr

24、imexcess()ncapacity: 0, dinosaurs.capacity);console.writeline(count: 0, dinosaurs.count);dinosaurs.clear();/清空清空console.writeline (nclear()ncapacity: 0, dinosaurs.capacity);console.writeline(count: 0, dinosaurs.count); c#.net程序設(shè)計csharpnetlist 泛型類泛型類代碼分析:代碼分析:l使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建一個空的字符串類型的使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建一個空的字符串類型的

25、list泛型列泛型列表。隨后顯示表。隨后顯示 capacity 屬性,然后使用屬性,然后使用 add 方法添加方法添加若干個項。添加的項被列出,若干個項。添加的項被列出,capacity 屬性會同屬性會同 count 屬性一起再次顯示,指示已根據(jù)需要增加了容量。屬性一起再次顯示,指示已根據(jù)需要增加了容量。 l使用使用 contains 方法測試該列表中是否存在某個項,使用方法測試該列表中是否存在某個項,使用 insert 方法在列表的中間插入一個新項,然后再次顯示方法在列表的中間插入一個新項,然后再次顯示列表的內(nèi)容。列表的內(nèi)容。 l默認(rèn)的默認(rèn)的 item 屬性(屬性(c# 中的索引器)用于檢索

26、項,中的索引器)用于檢索項,remove 方法用于移除前面添加的重復(fù)項的第一個實例,方法用于移除前面添加的重復(fù)項的第一個實例,然后,該示例再次顯示內(nèi)容。然后,該示例再次顯示內(nèi)容。remove 方法總是移除它方法總是移除它所遇到的第一個實例。所遇到的第一個實例。l使用使用 trimexcess 方法減小容量以匹配計數(shù),然后顯示方法減小容量以匹配計數(shù),然后顯示 capacity 和和 count 屬性。如果未用容量已經(jīng)小于總?cè)萘繉傩?。如果未用容量已?jīng)小于總?cè)萘康牡?10%,則列表容量不會進(jìn)行調(diào)整。,則列表容量不會進(jìn)行調(diào)整。l使用使用 clear 方法移除列表中的所有項,并顯示方法移除列表中的所有項

27、,并顯示 capacity 和和 count 屬性。屬性。數(shù)組數(shù)組array、arraylist和和list泛型類泛型類c#.net程序設(shè)計csharpnetlist,arraylist 類與類與array數(shù)組的區(qū)別數(shù)組的區(qū)別:array 的容量是固定的,而的容量是固定的,而 arraylist的容量可根據(jù)需要自動擴(kuò)充。如的容量可根據(jù)需要自動擴(kuò)充。如果更改了果更改了 capacity 屬性的值,則可以自動進(jìn)行內(nèi)存重新分配和元屬性的值,則可以自動進(jìn)行內(nèi)存重新分配和元素復(fù)制。素復(fù)制。larraylist提供添加、插入或移除某一范圍元素的方法。在提供添加、插入或移除某一范圍元素的方法。在 array

28、 中,只能一次獲取或設(shè)置一個元素的值。中,只能一次獲取或設(shè)置一個元素的值。l使用使用 synchronized 方法很容易創(chuàng)建方法很容易創(chuàng)建 arraylist 的同步版本。的同步版本。array 將實現(xiàn)同步的任務(wù)留給了用戶。將實現(xiàn)同步的任務(wù)留給了用戶。larraylist提供將只讀和固定大小包裝返回到集合的方法;而提供將只讀和固定大小包裝返回到集合的方法;而 array 不提供。不提供。l可以設(shè)置可以設(shè)置 array 的下限,但的下限,但 arraylist的下限始終為零。的下限始終為零。larray 可以具有多個維度,而可以具有多個維度,而 arraylist始終只是一維的。始終只是一維的

29、。l特定類型(不包括特定類型(不包括object)的數(shù)組)的數(shù)組array的性能優(yōu)于的性能優(yōu)于arraylist,這,這是因為是因為arraylist的元素屬于的元素屬于object類型,所以在存儲或檢索值類類型,所以在存儲或檢索值類型時通常發(fā)生裝箱和取消裝箱操作。不過,在不需要重新分配時型時通常發(fā)生裝箱和取消裝箱操作。不過,在不需要重新分配時(即最初的容量十分接近列表的最大容量),(即最初的容量十分接近列表的最大容量),list泛型類的性能與泛型類的性能與同類型的數(shù)組十分相近。同類型的數(shù)組十分相近。l需要數(shù)組的大多數(shù)情況都可以改為使用需要數(shù)組的大多數(shù)情況都可以改為使用arraylist或或l

30、ist泛型類;它泛型類;它們更容易使用,并且一般與相同類型的數(shù)組具有相近的性能。盡量們更容易使用,并且一般與相同類型的數(shù)組具有相近的性能。盡量使用使用list類,而不是使用類,而不是使用arraylist類或自己編寫強(qiáng)類型包裝集合。類或自己編寫強(qiáng)類型包裝集合。數(shù)組數(shù)組array、arraylist和和list泛型類泛型類c#.net程序設(shè)計csharpnethashtable 、dictionary和和sortedlist集合類集合類 hashtable 、dictionary和sortedlist集合類都實現(xiàn)idictionary, icollection, ienumerable, icl

31、oneable接口。其中idictionary接口表示鍵/值對的集合接口,或者說hashtable 、dictionary和sortedlist都是關(guān)于鍵/值對的集合。lidictionary接口是鍵/值對的非通用集合的基接口。每個元素都是一個存儲在 dictionaryentry對象中的鍵/值對。 lidictionary接口繼承了icollection, ienumerable接口,除了icollection,ienumerable接口成員外,還有以下成員:csharpnet屬性isfixedsize 獲取一個值,該值指示 idictionary 對象是否具有固定大小。屬性isreadon

32、ly 獲取一個值,該值指示 idictionary 對象是否為只讀。屬性item 獲取或設(shè)置具有指定鍵的元素。屬性keys 獲取 icollection 對象,它包含 idictionary 對象的鍵。屬性values 獲取 icollection 對象,它包含 idictionary 對象中的值。方法add 在 idictionary 對象中添加一個帶有所提供的鍵和值的元素。 方法clear 從 idictionary 對象中移除所有元素。 方法contains 確定 idictionary 對象是否包含具有指定鍵的元素。 方法getenumerator 返回一個用于idictionary對

33、象的idictionaryenumerator對象。 方法remove 從 idictionary 對象中移除帶有指定鍵的元素。 idictionary接口成員csharpnetusing system.collections;/使用hashtable類的項目hashtablesample的代碼 :public class sampleshashtable public static void main() hashtable ht = new hashtable();/創(chuàng)建hashtable實例ht ht.add(n01, 張三);/添加將帶有指定鍵和值的元素添加到ht ht.add(n02

34、, 李四); ht.add(n03, 王五); console.writeline(ht:count:0, ht.count); /顯示hashtable的屬性count printkeysandvalues(ht); public static void printkeysandvalues(hashtable ht) foreach (dictionaryentry de in ht)/顯示hashtable的鍵和值 console.write(0,1), de.key, de.value); 使用hashtable的add(objectkey, objectvalue)方法集合添加元素。

35、hashtable的元素是一個鍵/值對,元素類型既不是鍵的類型,也不是值的類型,而是dictionaryentry類型,因此foreach循環(huán)語句使用foreach(dictionaryentryde in ht)。dictionaryentry是結(jié)構(gòu)類型,具有object類型的鍵屬性key和object類型的值屬性key。 csharpnet使用dictionary泛型類dictionarysample項目代碼:public class sample public static void main() / 創(chuàng)建鍵和值都為string的dictionary對象實例openwith. dicti

36、onary openwith =new dictionary(); /為dictionary實例openwith添加元素,其中鍵值唯一,有些值是重復(fù)的 openwith.add(txt, notepad.exe); openwith.add(bmp, paint.exe); openwith.add(dib, paint.exe); openwith.add(rtf, wordpad.exe); try /插入具有重復(fù)鍵的元素因起異常 openwith.add(txt, winword.exe); catch (argumentexception) console.writeline(an e

37、lement with key = txt already exists.); / 使用鍵索引得到其值 console.writeline(for key = rtf, value = 0.,openwithrtf); openwithrtf = winword.exe;/使用鍵索引設(shè)置其值 console.writeline(for key = rtf, value = 0.,openwithrtf); openwithdoc = winword.exe;/如果該鍵不存在,添加新key/value元素csharpnet try /如果沒有該鍵,取其值引起異常 console.writelin

38、e(for key = tif, value = 0.,openwithtif); catch (keynotfoundexception) console.writeline(key = tif is not found.); string value = ; if (openwith.trygetvalue(tif, out value)/該方法更有效,不引起異常console.writeline(for key = tif, value = 0., value); else console.writeline(key = tif is not found.); if (!openwith

39、.containskey(ht)/判斷是否含有該鍵 openwith.add(ht, hypertrm.exe); console.writeline(value added for key = ht: 0,openwithht); foreach (keyvaluepair kvp in openwith)/遍歷該字典console.writeline(key = 0, value = 1,kvp.key, kvp.value); /取該字典值屬性,值集合valuecollection是強(qiáng)類型集合(本例string類型) dictionary.valuecollection valuecol

40、l =openwith.values; foreach (string s in valuecoll)/遍歷該字典值集合valuecollectionconsole.writeline(value = 0, s); csharpnet/取該字典的鍵屬性,鍵集合keycollection是強(qiáng)類型集合(本例string類型) dictionary.keycollection keycoll = openwith.keys; foreach (string s in keycoll)/遍歷該字典鍵集合valuecollection console.writeline(key = 0, s); con

41、sole.writeline(n刪除鍵為(doc)的這對元素); openwith.remove(doc); if (!openwith.containskey(doc) console.writeline(key doc is not found.); 代碼分析:使用item屬性(即索引器)來檢索值,當(dāng)請求的鍵不存在時將引發(fā)keynotfoundexception,與鍵相關(guān)聯(lián)的值可被替換。當(dāng)程序必須經(jīng)常嘗試字典中不存在的鍵值時,使用trygetvalue方法作為一種更有效的方法來檢索值,使用containskey方法在調(diào)用add方法之前測試某個鍵是否存在。使用keys屬性和values屬性來

42、單獨枚舉鍵和值。使用remove方法刪除集合中的一個元素。c#.net程序設(shè)計csharpnetqueue類和類和queue泛型類泛型類 lqueue類和類和queue泛型類都是先進(jìn)先出集合類,它們泛型類都是先進(jìn)先出集合類,它們實現(xiàn)實現(xiàn)ienumerable、icollection和和icloneable等接口,等接口,queue泛型類還實現(xiàn)了泛型類還實現(xiàn)了ienumerable和和icollection泛泛型接口。型接口。l隊列在按接收順序存儲消息方面可以方便地進(jìn)行順序隊列在按接收順序存儲消息方面可以方便地進(jìn)行順序處理。此類將隊列作為循環(huán)數(shù)組實現(xiàn)。存儲在處理。此類將隊列作為循環(huán)數(shù)組實現(xiàn)。存儲

43、在queue中的對象在一端插入,從另一端移除。中的對象在一端插入,從另一端移除。queue接受空接受空引用作為有效值并且允許重復(fù)的元素。引用作為有效值并且允許重復(fù)的元素。l可以對可以對queue及其元素執(zhí)行三種主要操作:及其元素執(zhí)行三種主要操作:lenqueue將一個元素添加到將一個元素添加到queue的末尾。的末尾。ldequeue從從queue的開始處移除最舊的元素。的開始處移除最舊的元素。lpeek從從queue的開始處返回最舊的元素,但不將其從的開始處返回最舊的元素,但不將其從queue中移除。中移除。下面是使用隊列下面是使用隊列queue泛型類的泛型類的queuesample項目的代

44、碼:項目的代碼:csharpnetusing system.collections.generic;class example public static void main() queue numbers = new queue(); numbers.enqueue(one); numbers.enqueue(two); numbers.enqueue(three); numbers.enqueue(four); numbers.enqueue(five); foreach (string number in numbers) console.writeline(number); conso

45、le.writeline(ndequeuing 0, numbers.dequeue(); console.writeline(peek at next item: 0, numbers.peek(); console.writeline(dequeuing 0, numbers.dequeue(); / 使用 toarray 方法將隊列元素復(fù)制到數(shù)組,然后將該數(shù)組 /傳遞給接受 ienumerable 的 queue 構(gòu)造函數(shù)以創(chuàng)建隊列副本 queue queuecopy = new queue(numbers.toarray(); foreach (string number in que

46、uecopy) console.writeline(number); csharpnet /創(chuàng)建一個大小是隊列大小兩倍的數(shù)組 string array2 = new stringnumbers.count * 2; /使用 copyto 方法從數(shù)組中間開始復(fù)制數(shù)組元素 numbers.copyto(array2, numbers.count); /使用接受ienumerable 的queue 構(gòu)造函數(shù)創(chuàng)建第二個隊列 queue queuecopy2 = new queue(array2); foreach (string number in queuecopy2) console.writeline(number); console.writeline(nqueuecopy.contains(four) = 0, queuecopy.co

溫馨提示

  • 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

提交評論