一、集合概述
1.1 概念
用以存儲(chǔ)數(shù)據(jù)示辈,將緊密相關(guān)的數(shù)據(jù)組合到一個(gè)集合中寥茫。
1.2 集合與數(shù)組的區(qū)別
數(shù)組一旦定義,無(wú)法改變其大蟹椤纱耻;集合可以動(dòng)態(tài)的調(diào)整大小。
二险耀、集合類別
*ArrayList :保存object類型的數(shù)組列表(什么類型都可以:int弄喘、double、string...)
*HashTable:散列表甩牺,可通過(guò)關(guān)鍵字訪問(wèn)值
*Queue:隊(duì)列
*Stack:堆棧
*StringDictionary:將鍵和值強(qiáng)類型轉(zhuǎn)化為字符串而不是對(duì)象來(lái)實(shí)現(xiàn)哈希表
*SortedList:表示鍵蘑志、值對(duì)的集合,這些鍵值對(duì)按鍵排序并可按照鍵和索引訪問(wèn)
三贬派、ArrayList類
3.1 概念:特殊的數(shù)組急但,通過(guò)添加和刪除元素可以動(dòng)態(tài)改變數(shù)組的長(zhǎng)度。命名空間:Using System.Collection's赠群;
3.2 添加元素
?3.2.1 ?Add()追加元素
ArrayList ? alist=new ArrayList()羊始;
alist.Add(“a”);//將string'類型的a放入alist
alist.Count ? ?//代表這個(gè)集合的長(zhǎng)度
3.2.2 Insert()插入元素
alist.Insert(0查描,“b”)突委;//在集合的第一個(gè)位置插入string類型的b柏卤;
alist.Insert(3,‘c’)匀油;//在集合的第四個(gè)位置插入char類型的c缘缚;
3.3 刪除元素
3.3.1 Remove()刪除指定元素
alist.Add(“a”);
alist.Add(“b”)敌蚜;
alist.Remove(“a”)桥滨;//刪除集合中a這個(gè)元素
3.3.2 RemoveAt()按索引刪除元素
alist.RemoveAt(3);//刪除第四個(gè)位置的元素
3.3.3 Clear()刪除所有元素
alist.Clear()弛车;//類似于一個(gè)方法齐媒,直接使用,沒(méi)有參數(shù)
3.3.4 Sort()排序
alist.Sort()纷跛;//對(duì)集合alist進(jìn)行升序排列
3.3.5 查找
3.3.5.1 IndexOf() 搜索指定元素喻括,返回第一個(gè)匹配項(xiàng)的從零開(kāi)始的索引(返回的是該元素在集合中的位置)
alist.IndexOf(“a”);//第一次出現(xiàn)元素a的位置贫奠;
alis.IndexOf(“a”唬血,2);//第二次出現(xiàn)元素a的位置唤崭;...........
3.3.5.2 LastIndexOf()搜索最后一個(gè)匹配項(xiàng)拷恨,從后往前搜索
3.3.5.3 Contains確定某個(gè)元素是否在集合中
alis.Constains(“a”);//檢測(cè)a是否存在于集合alist中谢肾,是的話返回True腕侄,否的話返回False
四、Stack類
4.1 概念:后進(jìn)先出的集合芦疏。命名空間:Using System.Collections兜挨;
4.2 入棧:Push
Stack sk=new Stack();
foreach(int ?i ?in ?new ?int[4] ?{1,2,3,4})
{
sk.Push(i)眯分;//填充sk
} ? //遍歷后得到4,3,2,1(后進(jìn)先出);
4.2 出棧:Pop
sk.Pop()//出棧一個(gè)元素柒桑;
4.3 Peek
sk.Peek()//查看棧頂對(duì)象但不出棧
五弊决、Queue類
5.1 概念:隊(duì)列,先進(jìn)先出 ? ? 命名空間:Using System.Collections魁淳;
5.2 添加Enqueue
Queue qu=new Queue()飘诗;
foreach(int ?i ?in ?new ?int[4] ?{1,2,3,4})
{
qu.Enququ(i);//填充qu
} ? //遍歷后得到1,2,3,4(先進(jìn)先出)界逛;
5.3 移出并返回隊(duì)列開(kāi)始的對(duì)象 -- Dequeue
qu.Dequeue()昆稿;類似于Stack中的Pop;
5.4 Peek返回隊(duì)列開(kāi)始處的對(duì)象但不移除
sk.Peek()//查看隊(duì)列開(kāi)始處的對(duì)象但不移出
六息拜、HashTable類
6.1 概念:鍵溉潭、值對(duì)的集合净响。命名空間:Using System.Collections;
6.2 添加Add及遍歷顯示
例:
HashTable ht=new HashTable()喳瓣;
ht.Add(“name”馋贤,“唐僧”);
ht.Add(“age”畏陕,28)配乓;
.........
//ht.Add(“name”,“玄奘”)惠毁;//這個(gè)是錯(cuò)誤的---關(guān)鍵字不能重復(fù)S糖邸!鞠绰!
foreach(DictionaryEntry de in ht)
{
console.WriteLine(“{0}-----{1}”腰埂,de.Key,de.Value)洞豁;
}
輸出結(jié)果:
name---唐僧
age---28
6.3 Remove ?移除鍵和值
ht.Remove(“name”)盐固;//代表移除了name這一鍵和值
6.4 應(yīng)用
如果只知道Key且不知道Value,并且需要頻繁修改丈挟,那么需要使用HashTable刁卜,因?yàn)镠ashTable添加刪除時(shí)無(wú)序的,速度快曙咽。
七蛔趴、StringDictionary類
7.1 概念:與HashTable類似,但是鍵和值固定存放字符串例朱。命名空間:Using System.Collections.Specialized孝情;
7.2 注意事項(xiàng):
使用上與HashTable基本相同,但是注意 鍵 不區(qū)分大小寫洒嗤,所有的 鍵 都會(huì)自動(dòng)轉(zhuǎn)化成小寫箫荡。
與HashTable相比,性能更好渔隶,省去了裝箱拆箱的過(guò)程羔挡。
八、SortedList類
8.1 概念:與HashTable類似间唉,這些鍵值對(duì)按鍵排序并可按照鍵和索引(位置)訪問(wèn)绞灼,命名空間:Using System.Collections;
8.2 使用:
SortedList會(huì)自動(dòng)進(jìn)行排序呈野;
SortedList sl=new SortedList()低矮;
console.Writeline(sl.GetByIndex(1));//代表的是獲取排序后第二個(gè)鍵所對(duì)應(yīng)的值被冒;