版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、要選擇正確的集合,我們首先要了解一些數(shù)據(jù)結(jié)構(gòu)的知識(shí)。所謂數(shù)據(jù)結(jié)構(gòu),就是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。結(jié)合下圖,我們看一下對(duì)集合的分類。集合分類集合分類在上圖中,可以看到,集合總體上分為線性集合和非線性集合。線性集合指元素具有唯一的前驅(qū)和后驅(qū)的數(shù)據(jù)結(jié)構(gòu)類型。非線性集合是指具有多個(gè)前驅(qū)或后驅(qū)的數(shù)據(jù)結(jié)構(gòu)類型,如:樹、圖。在FCL中,非線性集合實(shí)現(xiàn)的比較少,所以我們將會(huì)更多的討論線性集合。注意:由于類型安全、轉(zhuǎn)型效率等方面的原
2、因,本建議將只討論泛型集合。線性集合按存儲(chǔ)方式,又分為直接存儲(chǔ)和順序存儲(chǔ)。所謂直接存儲(chǔ)是指:該類型的集合數(shù)據(jù)元素可以直接通過(guò)下標(biāo)(也即index)來(lái)訪問(wèn),在C#中有三種形式:Array(包括數(shù)組和List),string,struct。直接存儲(chǔ)結(jié)構(gòu)的優(yōu)點(diǎn)是:向數(shù)據(jù)結(jié)構(gòu)中添加元素是很高效的,只要直接放在數(shù)據(jù)末尾的第一個(gè)空位上就可以了。它的缺點(diǎn)是:向集合插入元素將會(huì)變得低效,它需要給插入的元素騰出位置并順序移動(dòng)后面的元素。string和st
3、ructs雖然是直接存儲(chǔ)結(jié)構(gòu),但它們與一般的集合定義有很大的不同,所以也不在本建議討論之中。在直接存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)中,需要區(qū)分的是數(shù)組和List的選擇。再次強(qiáng)調(diào)一下:如果集合的數(shù)目固定并且不涉及到轉(zhuǎn)型,使用數(shù)組效率高,否則就使用List。順序存儲(chǔ)結(jié)構(gòu),也即線性表。線性表的大小可動(dòng)態(tài)的擴(kuò)大和縮小,它在一片連續(xù)的區(qū)域中存儲(chǔ)數(shù)據(jù)元素。線性表不能按照索引進(jìn)行查找,它通過(guò)對(duì)地址的引用來(lái)搜索元素,為了找字典Dictionary存儲(chǔ)的是鍵值對(duì),值在基于
4、鍵的散列碼的基礎(chǔ)上進(jìn)行存儲(chǔ)。字典類對(duì)象由包含集合元素的存儲(chǔ)桶組成,每一存儲(chǔ)桶與基于該元素的鍵的哈希值關(guān)聯(lián)。如果需要根據(jù)鍵進(jìn)行值的查找,使用Dictionary將會(huì)使搜索和檢索更會(huì)快捷。雙向鏈表LinkedList是一個(gè)類型為L(zhǎng)inkedListNode的元素對(duì)象的集合。當(dāng)我們?cè)诩现杏X(jué)得插入和刪除數(shù)據(jù)很慢的時(shí)候,我們可以考慮使用鏈表。如果我們使用LinkedList,我們會(huì)發(fā)現(xiàn)此類型并沒(méi)有其它集合普遍具有的Add方法,取而代之的是Add
5、After、AddBefe、AddFirst、AddLast等方法。雙向鏈表中的每個(gè)節(jié)點(diǎn)都向前指向Previous節(jié)點(diǎn),向后指向Next節(jié)點(diǎn)。以上討論了線性集合,在FCL中,非線性集合實(shí)現(xiàn)的不多。非線性集合分為層次集合和組集合。層次集合,如樹,在FCL中就沒(méi)有實(shí)現(xiàn)。組集合,又分為集和圖。集在FCL中實(shí)現(xiàn)為HashSet,而圖在FCL中也沒(méi)有對(duì)應(yīng)實(shí)現(xiàn)。集的概念在本意上是指存放在集合中的元素是無(wú)序的且不能重復(fù)的。下圖演示了集的用途:集操作集
6、操作除了上面我們提到的集合類型,還有其他幾個(gè)要掌握的集合類型,它們是在實(shí)際應(yīng)用中發(fā)展出來(lái)的對(duì)以上基礎(chǔ)類型的擴(kuò)展:StedList,StedDictionary,StedSet。它們所擴(kuò)展的對(duì)應(yīng)類為L(zhǎng)ist,Dictionary,HashSet,作用是將原本無(wú)序排列的元素,變?yōu)橛行蚺帕?。除了排序上的需求增加了上?個(gè)集合類,在命名空間System.Collections.Concurrent下,還涉及幾個(gè)多線程集合類。它們主要是:Conc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c#編碼規(guī)范
- c#編碼命名規(guī)則
- c#命名編碼規(guī)范
- c#開發(fā)編碼規(guī)范-read
- c#程序的回歸測(cè)試選擇
- c#文獻(xiàn)翻譯---c#的優(yōu)點(diǎn)
- C#程序的回歸測(cè)試選擇.docx
- c#程序的回歸測(cè)試選擇-外文翻譯
- c#期末試題選擇題及答案
- c#程序
- 淺談如何進(jìn)行壓力表的正確選擇與安裝
- [c#畢設(shè)]c#人事管理系統(tǒng)
- 概述c# 語(yǔ)言的基本原理c# 中對(duì)象
- 計(jì)算機(jī)外文翻譯--c#程序的回歸測(cè)試選擇
- c#的命名規(guī)則
- c#類的嵌套
- 計(jì)算機(jī)外文翻譯---c#程序的回歸測(cè)試選擇
- 計(jì)算機(jī)外文翻譯---c#程序的回歸測(cè)試選擇
- c#爬蟲算法
- c#圖像處理
評(píng)論
0/150
提交評(píng)論