程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#高級(九)C#數據結構,集合

C#高級(九)C#數據結構,集合

編輯:關於C#

一、集合的基本概念

在.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
}
}
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved