集合
集合包括: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 鍊錶,每個元素承上啟下 這些集合都是在特定的場合下使用...