在 ArrayList 中,我們可以直接存取集合中任何一個資料項目,但有時候我們並不需要如此功能,只需要可以循序存取集合中的項目即可。 在 .Net 裡,提供了二個循序串列 (sequential list) 物件:Queue 與 Stack 。 這二個物件的特色是,可以在一個步驟中,由集合中取出資料項目,並同時將該資料項目由集合中移除。
Queue
表示先進先出 (FIFO) 集合。
- Queue.Enqueue :將物件加入 Queue 的末端。
- Queue.Dequeue :移除並傳回在 Queue 前端的物件。
- Queue.Peek :傳回 Queue 前端的物件而不需移除它。
- Queue.Clear:從 Queue 移除所有物件。
//Queue 類別的組成成員
public interface Queue : ICollection, IEnumerable, ICloneable
{
public virtual int Count { get; }
public virtual Object <strong class="fcOrange">Dequeue</strong>() //移除並傳回在 Queue 前端的物件。
public virtual void <strong class="fcOrange">Enqueue</strong>(Object obj) //將物件加入 Queue 的末端。
public virtual Object <strong class="fcOrange">Peek</strong>() //傳回 Queue 前端的物件而不需移除它。
}Queue q = new Queue();
q.Enqueue("First");
q.Enqueue("Second");
q.Enqueue("Third");
q.Enqueue("Fourth");
while (q.Count > 0)
{
Console.WriteLine(q.Dequeue());
}若要取出一個item,但不想將其移除,這時候可以利用Peek方法來解決
if (q.Peek() is String)
{
Console.WriteLine(q.Dequeue());
}Stack
表示後進先出 (LIFO) 集合。
- Stack.Push :將物件插入 Stack 的頂端。
- Stack.Pop :移除並傳回在 Stack 頂端的物件。
- Stack.Peek :傳回 Stack 頂端的物件而不需移除它。
- Stack.Clear:從 Stack 移除所有物件。
//Stack 類別的組成成員
public class Stack : ICollection, IEnumerable, ICloneable
{
public virtual int Count { get; }
public virtual Object <strong class="fcOrange">Pop</strong>() //移除並傳回在 Stack 頂端的物件。
public virtual void <strong class="fcOrange">Push(Object obj)</strong> //將物件插入 Stack 的頂端。
public virtual Object <strong class="fcOrange">Peek</strong>() //傳回 Stack 頂端的物件而不需移除它。
}Stack s = new Stack();
s.Push("First");
s.Push("Second");
s.Push("Third");
s.Push("Fourth");
while (s.Count > 0)
{
Console.WriteLine(s.Pop());
}
沒有留言:
張貼留言