標籤:queue類 隊列 9.png 儲存 bsp 對比 ret 命名 hashtable
集合
在實際編程中,常會按一定要求來處理和計算一組一組的資料,如堆棧操作、隊列操作或系列資料的增、刪、改、查。C#提供了數群組類型來進行管理,但是這樣有個缺點就是數組的大小是固定的。我們可以通過集合類來進行管理。資料集合類都位於System.Collections命名空間中,使用時需引用。
數組和集合的對比:
1、ArrayList類
ArrayList是一個可動態擴充容量的集合。
ArrayList 數組集合名 = new ArrayList();
2、Hashtable類
雜湊表Hashtable是一種資料字典,它將資料作為一種Key/Value儲存。
Hashtable 雜湊表名 = new Hashtable();
索引值對均是object類型,使用<hasntable執行個體名>[鍵],將返回object類型的,由鍵對應的資料。轉化強轉,使用裡氏轉換原則
3、Stack類
Stack這種集合按照“先進先出”或“後進先出”的原則來操作元素,稱作棧集合。
Stack 棧名 = new Stack();
4、Queue類
Queue 隊列名 = new Queue();
集合類泛型
為什麼引用集合類泛型?
非泛型的集合,將成員Object Storage Service為Object類型的實型,這樣可以儲存任何類型的元素,但是增加裝箱和拆箱的效能開銷。
static void Main(string[] args){ ArrayList array = new ArrayList(); int i = 10; array.Add(i); i =array[0];//此處報錯,因為集合儲存Object類型,需要(int)強制類型轉化}
以約束訪問特定資料類型的方法,避免了集合的繁瑣操作,專門處理某種類型。
1、List<T>類
建立列表(列表可以儲存任何類型的資料,在建立列表對象的時候首先要指定你要建立的這個列表要儲存什麼類型的)(泛型)
List<T>集合名稱 = new List<T>();
T為元素類型,向集合添加元素需要受到T的約束。
List<int> scoreList = new List<int>(); List<int> scoreList = new List<int>(){1,2,3} List<int> scoreList = new List<string>(){"one","two"} var scoreList = new List<int>();
聲明例子
List<T>泛型集合與ArrayList集合使用方法類似。
2、Dictionary<K,V>類
按照鍵/值對的形式儲存特定元素。在Dictionary<K,V>的泛型集合中,能夠按照類似雜湊表儲存資料的方式儲存資料,且能對儲存的資料進行類型檢查。在Dictionary中的任何鍵都必須是唯一的,鍵不可為空。但是如果,實值型別為參考型別,實值型別可以為Null。
Dictionary<鍵類型,實值型別>集合名稱 = new Dictionary<鍵類型,實值型別>();
3、Stack<T>類
與stack集合類似。
4、Queue<T>類
與Queue集合類似。
泛型為什麼引入泛型?
通過參數化型別來實現在同一份代碼上操作多種資料類型。利用“參數化型別”將類型抽象化,從而實現靈活的複用。
泛型的使用靈活多變,應用廣泛。
1、泛型類定義
定義一個泛型類就是指的是,定義一個類,這個類中某些欄位的類型是不確定的,這些類型可以在類構造的時候確定下來。
class ClassA<T1,T2>{ private T1 a; private T2 b; public ClassA(T1 a,T2 b){ this.a = a ;this.b = b; } public string GetSum(){ return a+“”+b; }}
泛型類的定義2、泛型方法
定義泛型方法就是定義一個方法,這個方法的參數的類型可以是不確定的,當調用這個方法的時候再去確定方法的參數的類型。
public static T GetSum<T>(T a,T b){ return a+b;}
泛型方法的定義
索引器:通過[index]這種形式去訪問資料,就是索引器,在泛型中常用該方法去訪問。
C#_集合和泛型