一、集合的基本概念
在.NET中,對於數據結構的支持,即把許多類似的對象組合起來。最簡單的數據結構就是數組。
集合表示一組可以通過遍歷每個元素來訪問的的一組對象,特別是可以使用foreach循環來訪問他們。 對象如果可以提供相關對象的引用,就是一個集合。稱為
使用foreach循環是集合的主要目的,集合沒有提供其他特性。
二、數組列表。
數組列表類似數組,但數組列表是可以增大的。數組在規定的大小後,就不可以再增加了,但數組列 表可以。
比如 ArrayList arrayListTest=new ArraryList(10); 該句創建了一個大小為10的ArraryList對象, 當我們再為其添加第11項時,其容量會自動擴大1倍,也就變成了20,而原來的對象會被添加上垃圾收集 器的標記。
為其添加對象的方法是 .Add()
比如:arrayListTest.Add(“gosoa.com.cn”);
我們來完整的看個例子。
using System;
using System.Collections;
namespace gosoa.com.cn
{
class Test
{
static void Main()
{
ArrayList arrayTest = new ArrayList(4);
arrayTest.Add("www.");
arrayTest.Add("gosoa.");
arrayTest.Add("com.");
arrayTest.Add("cn");
foreach(string item in arrayTest)
{
Console.Write(item);
}
Console.WriteLine("\n"+arrayTest.Capacity.ToString());
arrayTest.Add("url");
Console.WriteLine(arrayTest.Capacity.ToString());
}
}
}
注意,在使用ArrayList之前,要引入System.Collections 這個命名空間。
在本例中,ArrayList arrayTest = new ArrayList(4); 我們定義了一個容量為4的ArrayList實例, 然後給其添加了4個選項,並且最後打印了出來。arrayTest.Capacity 是用來輸出ArrayList容量的。上 例中 輸出的結果是
www.gosoa.com.cn
4
8
為什麼最後輸出的是8呢?因為起初定義的arrayTest 容量是4,當最後arrayTest.Add("url");的時候 ,已經是在添加第五個選項了,這時,arrayTest的容量就會增加一倍。
ArrayList還有Insert(), RemoveAt(),AddRange(),RemoveRange()方法。
我們來以例子學習。
using System;
using System.Collections;
namespace gosoa.com.cn
{
class Test
{
static void Main()
{
ArrayList arrayTest = new ArrayList(4);
arrayTest.Add("www.");
arrayTest.Add("gosoa.");
arrayTest.Add("com.");
arrayTest.Add("cn");
foreach(string item in arrayTest)
{
Console.Write(item);
}
Console.WriteLine("\n \n");
//此時輸出
// www.gosoa.com.cn
//在第一個選項前面插入一項
arrayTest.Insert(0,"http://");
foreach(string item in arrayTest)
{
Console.Write(item);
}
Console.WriteLine("\n \n");
//添加個http後 輸出 如下
// http://www.gosoa.com.cn
//新建立一個字符串數組
string [] stringArr=new string[4];
stringArr[0]="\n";
stringArr[1]="www.";
stringArr[2]="cnblogs.";
stringArr[3]="com";
//將整個字符串數組添加進arrayTest
arrayTest.AddRange(stringArr);
foreach(string item in arrayTest)
{
Console.Write(item);
}
Console.WriteLine("\n \n");
//添加進 字符串 數組後 輸出結果如下
// http://www.gosoa.com.cn
// www.cnblogs.com
//從arrayTest的第四項開始,刪除4個選項
arrayTest.RemoveRange(4,4);
foreach(string item in arrayTest)
{
Console.Write(item);
}
//刪除後輸出的就只是 http://www.gosoa.com.cn 了。
}
}
}
在上例中 ,注釋已經非常明確了。如果還有不明白的,可以留言給我。
三、Stack 類(棧)
棧是另外一種集合。適合於處理應用程序使用完後就刪除的臨時數據項。
在棧裡,存儲和取出的順序是 先進後出,或者說 後進先出。
在stack裡面,元素是使用Push()方法放入棧,使用Pop()方法彈出棧外。我們來看個例子。
using System;
using System.Collections;
namespace gosoa.com.cn
{
class Test
{
static void Main()
{
Stack stackTest = new Stack();
//注意這裡添加的順序。
stackTest.Push("cn");
stackTest.Push("com.");
stackTest.Push("gosoa.");
stackTest.Push("www.");
foreach(string item in stackTest)
{
Console.Write(item);
}
Console.WriteLine("\n \n");
//此時輸出 www.gosoa.com.cn 並非 cncom.gosoa.www
stackTest.Pop();
foreach(string item in stackTest)
{
Console.Write(item);
}
//此時輸出 gosoa.com.cn
}
}
}
在上例中,展示了怎樣使用Push()和Pop()方法。但要注意,push的順序。
而且在調用Pop()方法後,是刪除了最後push()的那個元素。所以輸出了 gosoa.com.cn
四、Queue類。
和Stack類似,只是Queue先進先出,後進後出。與Stack相反。例子和上面的一樣,只需稍做修改。
Queue使用 Enqueue 添加元素,使用Dequeue 刪除元素
using System;
using System.Collections;
namespace gosoa.com.cn
{
class Test
{
static void Main()
{
Queue queueTest = new Queue();
//注意這裡添加的順序。
queueTest.Enqueue("cn");
queueTest.Enqueue("com.");
queueTest.Enqueue("gosoa.");
queueTest.Enqueue("www.");
foreach(string item in queueTest)
{
Console.Write(item);
}
Console.WriteLine("\n \n");
//此時輸出 cncom.gosoa.www 並非 www.gosoa.com.cn
queueTest.Dequeue();
foreach(string item in queueTest)
{
Console.Write(item);
}
//此時輸出 com.gosoa.www
}
}
}