首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 6 種常用集合類詳解 (二)

     編輯:關於C語言

2. Stack - 堆疊 (LIFO)

後進先出。Push 入堆疊,Pop 出堆疊,Peek 查看頂端不移除。

var sk = new Stack();
var sk2 = new Stack();

foreach (int i in new[] { 1, 2, 3, 4 })
{
    sk.Push(i);
    sk2.Push(i);
}

// 遍歷(不移除)
foreach (int i in sk) Console.WriteLine(i); // 4,3,2,1

sk.Pop(); // 移除 4
foreach (int i in sk) Console.WriteLine(i); // 3,2,1

sk2.Peek(); // 查看 4
foreach (int i in sk2) Console.WriteLine(i); // 4,3,2,1

// 清空
while (sk2.Count > 0) sk2.Pop();

3. Queue - 隊列 (FIFO)

先進先出。Enqueue 入隊,Dequeue 出隊,Peek 查看前端不移除。

var qu = new Queue();
var qu2 = new Queue();

foreach (int i in new[] { 1, 2, 3, 4 })
{
    qu.Enqueue(i);
    qu2.Enqueue(i);
}

foreach (int i in qu) Console.WriteLine(i); // 1,2,3,4

qu.Dequeue(); // 移除 1
foreach (int i in qu) Console.WriteLine(i); // 2,3,4

qu2.Peek(); // 查看 1
foreach (int i in qu2) Console.WriteLine(i); // 1,2,3,4

while (qu2.Count > 0) qu2.Dequeue();

核心差異比較

特性StackQueue
順序原則LIFO (後進先出)FIFO (先進先出)
新增方法PushEnqueue
移除方法PopDequeue
查看方法Peek (頂端)Peek (前端)
典型應用遞迴轉迴圈、撤銷操作、語法解析任務排程、訊息佇列、BFS 演算法

注意事項

  • 兩者皆非泛型集合,元素型別為 object,取出需轉型
  • Peek 空集合拋出 InvalidOperationException
  • Count 屬性獲取元素數量
  • .NET 2.0+ 建議使用泛型版本 Stack<T>、Queue<T>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved