淺談C#中的集合對象(Collections)
記得教科書上有這樣一句話:"如果需要使用同一類型的多個對象,就可以使用集合和數組。" ,是的,沒有錯.只是數組的大小是固定的。如果元素個數是動態的,就應使用集合類。在.NET Framework里,集合有很多,如List
1.數組
在實際應用中,數組又可分為:簡單數組、多維數組、鋸齒數組、Array數組.使用最多的應該算的簡單數組和多維數組,這里我以簡單數組為例簡單介紹下數組的簡單使用,關于的其他知識點請大家參考相關資料和書籍.
比如說我們要定義一個整型的簡單數組,那應該怎么定義呢?
classProgram |
是上面這樣定義和使用的嗎?我想稍微學過編程的朋友都可以給出肯定的答案.關于這點我不想作過多的解釋.見下圖:
這里我們是使用的基本類型(int)類型來定義的數組,在使用開發中我們還會使用到自定義類型數組,下面我就簡單的說說這方面的知識.要定義自定義類型數組,那么首先就應該有個自定義類型,當然這個類型可以封其他的相關屬性.OK,如下代碼段:
/// |
如上就是一個自定義的類型,我們在其內部封裝了一個name屬性.那么,類型已經定義好,那我們應該如何去使用這個自定義類型去定義一個數組呢?是這樣的嗎?
classProgram |
如上我們就完成了一個自定義類型的對象數組的定義,以及數組的相關操作.見下圖:
由于多維數組、鋸齒數組、Array數組等數組在實際的開發中使用不是很多,這里就不作介紹.
2.集合對象
集合類可以組合為集合,存儲Object類型的元素和泛型集合類。在.NET 2.0之前,不存在泛型?,F在泛型集合類通常是集合的首選類型。泛型集合類是類型安全的,如果使用值類型,是不需要裝箱操作的。如果要在集合中添加不同類型的對象,且這些對象不是相互派生的,例如在集合中添加int和string對象,就只需基于對象的集合類。
象類型的集合位于System.Collections命名空間;泛型集合類位于System.Collections. Generic命名空間;當然,組合集合類還有其他方式。集合可以根據集合類執行的接口組合為列表、集合和字典。接口及其功能如表10-1所示。.NET 2.0為集合類添加了新的泛型接口,例如IEnumerable
(1)列表
.NET Framework為動態列表提供了類ArrayList和List
classProgram
{
staticvoidMain(string[]args)
{
//創建列表
ArrayListlist=newArrayList();
//添加元素
list.Add("張三");
//插入元素
list.Insert(1,"李四");
//訪問元素
stringname=list[0].ToString();
//刪除元素
list.RemoveAt(1);//刪除索引號為1的元素|Remove(Objectobj);
//檢索元素
intindex=list.IndexOf("張三"); //得到對象所在的下標
//排序元素
list.Sort(); //有多種重載
Listl=newList (); //創建列表
l.Add(1); //添加元素
l.Add(7);
l.Add(3);
l.Add(9);
l.Add(6);
l.Add(10);
l.Sort();
foreach(int iinl)
{
Console.Write(i+"");
}
l.Remove(10); //刪除值為10的元素
}
}
關于列表的算法可以參考我以前寫過的一篇文章,文章連接:列表算法
(2)隊列
隊列是其元素以先進先出(FIFO)的方式來處理的集合。先放在隊列中的元素會先讀取??山Y合下圖來理解:
在.NET的System.Collections命名空間中有非泛型類Queue,在System.Collections. Generic命名空間中有泛型類Queue
在創建隊列時,可以使用與List
不過一般項目中用得不是很多,這里故不做示例代碼.
【編輯推薦】