C 中的集合

2021-06-20 23:06:26 字數 3305 閱讀 5420

集合

集合包括:arraylist,hashtable(雜湊表),list,dictionary(字典)。

1、arraylist

定義:arraylist mylist=new arraylist();  //arraylist 可變長度陣列,使用類似於陣列

新增資料: arraylist array = new arraylist();

array.add("hello");

array.add(10);

array.add("9.9");

array.add(datetime.now);

array.add("hello");

array.add(10);

array.add(9.9);

array.add(datetime.now);

array.add("hello");

array.add(10);

array.add(9.9);

array.add(datetime.now);

//將陣列新增到集合中,陣列中每乙個元素都作為了集合的乙個元素

array.addrange(new string[2] );

//count獲取的是集合中實際的個數,caoacity獲取的是集合的容量

console.writeline(array.count);//個數

console.writeline(array.capacity);//容量

//不會刪除集合中相同的元素,只會刪除乙個,而且從第乙個開始刪除

刪除資料:array.remove(9.9);

//for (int i = 0; i < 9; i++)

//for (int i = 0; i < 6; i++)

//雖然集合中所生陣列個數不多,但是陣列容量還是很大,造成記憶體空間浪費,這是可以手動縮小集合大小,其實就是在記憶體中新建乙個小陣列,將資料拿過來,將原來陣列釋放掉。

array.trimtosize();(縮小集合大小)

console.writeline(array.count);//個數

console.writeline(array.capacity);//容量

console.readkey();

遍歷陣列: for (int i = 0; i < array.count; i++)

2、hashtable(雜湊表)

在arraylist中如果要查詢乙個元素,必須要遍歷陣列,假如陣列有一萬條資料會很耗記憶體的。所以我們可以定義hashtable(雜湊表)。

定義: hashtable table = new hashtable();

//當我們執行新增操作時,發現兩個引數都是object型別,這就意味著物件新增到集合中之後就會被轉換成object型別,就是進行了裝箱操作。

新增資料:  table.add("張三", 20);  //新增的資料有key和value。方便查詢資料

table.add("李四", 21);

table.add("王五", 22);

table.add("趙六", 23);

table.add("陳麻子", 24);

#region 修改和刪除

table["陳麻子"] = 25;

console.writeline("陳麻子的年齡為", table["陳麻子"]);

table.remove("陳麻子");

foreach (dictionaryentry item in table)

的年齡為", item.key, item.value);

}#endregion

#region 在hashtable中尋找需要的元素

foreach (dictionaryentry item in table)

", item.value);}}

#endregion

a、用hashtable宣告的物件中的key和value是結構dictionaryentry中的方法,所以hashtable宣告的物件的型別是dictionaryentry,

所以foreach中的型別寫為dictionaryentry

b、如果想用foreach遍歷,物件要實現了ienumerable這個介面

3、list是arraylist的公升級版,減少了裝箱和拆箱的操作。arraylist可以新增任何型別的資料,而list只能新增定義時型別的資料。

//arraylist list = new arraylist();

//因為list集合限定了存放資料的型別,導致防止內容沒有arraylist方便,但是取資料方便,而且效率高。為什麼?因為既然限定了資料的型別,那麼在存放資料的時候就省去了裝箱的操作,同樣取資料的時候因為事先就知道是什麼型別,所以也省去了拆線操作。

定義:listlist = new list();

新增資料:  list.add(10);

list.add(11);

list.add(12);

list.add(3);

方法:sort()(排序從小到大)、max()、min()、sum()…

刪除和更改資料與以上型別基本相同。

遍歷和arraylist基本相同,可以用for也可以用foreach。用foreach時型別不用更改。用var

4、dictionary(字典)是hashtable(雜湊表)的公升級版,和list是arraylist的公升級版的原因差不多。

定義: dictionarydic = new dictionary();

新增資料: dic.add("張三", 20);

dic.add("李四", 21);

dic.add("王五", 22);

dic.add("趙六", 23);

dic.add("陳麻子", 24);

#region 修改

dic["陳麻子"] = 25;

#endregion

#region 便利輸出值

//foreach (int item in dic.values)

//#endregion

#region 遍歷輸出鍵

//foreach (string item in dic.keys)

//的年齡是",item,dic[item]);

//}#endregion

#region 遍歷輸出鍵值對

foreach (keyvaluepairitem in dic)

的年齡是",item.key,item.value);

}#endregion

遍歷輸出dictionary(字典)時,型別需要更改為keyvaluepair型別

C 中的集合

陣列的長度不可變,在定義的時候已經被固定 2.陣列裡的元素的型別必須統一,不能存放多個型別的資料.arraylist 動態陣列 陣列的例項化 arraylist list new arraylist 可以使用集合的初始化器快速的賦值 arraylist list new arraylist 集合的操...

C 中的集合

集合 collection 類是專門用於資料儲存和檢索的類。這些類提供了對棧 stack 佇列 queue 列表 list 和雜湊表 hash table 的支援。大多數集合類實現了相同的介面。集合 collection 類服務於不同的目的,如為元素動態分配記憶體,基於索引訪問列表項等等。這些類建立...

C 中的集合

c 中有很多集合型別,比如list,dictionary,這些是我們常用的,但也有一些少眾的場合使用的集合 特徵型別的readonly集合,sort集合 封裝特定演算法型別的集合 queue 先進先出 stack 後進先出 linkedlist 鍊錶,每個元素承上啟下 這些集合都是在特定的場合下使用...