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