Queue与list 与Stack

 Stack数据表现方式为先进后出:只能在栈顶进行插入和删除,最后一个放入堆栈中的对象总是先被取出来    queue:先进先出  ,当在列表中添加一项时,会插入到队尾,也被称为入队;当删除一项时,会在队头进行删除,也被称为出队

QueueList 都是 C# 中的集合类型,但它们有一些重要的区别,主要体现在数据结构和用途上。

Queue(队列)

  • 数据结构: Queue 是一个先进先出(FIFO)的数据结构。元素按照它们进入队列的顺序排列,而在出队列时则按照相反的顺序。

  • 主要操作:

    • Enqueue: 将元素添加到队列的末尾。
    • Dequeue: 从队列的开头移除并返回元素。
    • Peek: 返回队列头部的元素,但不移除它。
  • 适用场景: 队列通常用于实现任务排队、消息传递等场景,其中需要按照特定的顺序处理元素。

  • 命名空间: Queue 类位于 System.Collections 命名空间中。

Stack

using UnityEngine;
using System.Collections.Generic;

public class StackExample : MonoBehaviour
{
    // 创建一个整数类型的栈
    private Stack<int> myStack = new Stack<int>();

    void Start()
    {
        // 将元素推入栈中
        myStack.Push(1);
        myStack.Push(2);
        myStack.Push(3);

        // 打印栈的内容
        PrintStack();

        // 弹出栈顶元素
        int poppedItem = myStack.Pop();              //如果是Peek,Peek方法用于查看栈顶元素而不从栈中移除它
        Debug.Log("Popped item: " + poppedItem);

        // 打印修改后的栈
        PrintStack();
    }

    // 打印栈的内容
    void PrintStack()
    {
        Debug.Log("Stack contents:");

        // 遍历栈中的元素
        foreach (int item in myStack)
        {
            Debug.Log(item);
        }

        Debug.Log("------------");
    }
}

List(列表)

  • 数据结构: List 是一个动态数组,元素在内存中是连续存储的。它允许通过索引直接访问元素,而不需要按照特定的顺序遍历集合。

  • 主要操作:

    • Add: 在列表末尾添加元素。
    • Remove: 从列表中移除指定的元素。
    • Count: 获取列表中元素的数量。
  • 适用场景: List 适用于需要频繁访问、插入、删除元素的情况,而不关心元素的顺序。

  • 命名空间: List 类位于 System.Collections.Generic 命名空间中。

选择使用场景:

  • 如果你需要按照特定的顺序处理元素,且只关心队列头部和尾部的操作,应该选择 Queue

    Queue<string> myQueue = new Queue<string>(); myQueue.Enqueue("First"); myQueue.Enqueue("Second"); string frontItem = myQueue.Dequeue();

  • 如果你需要在集合中频繁执行随机访问、插入、删除等操作,并且不关心元素的顺序,应该选择 List

    List<string> myList = new List<string>(); myList.Add("First"); myList.Add("Second"); myList.Remove("First");

总的来说,QueueList 分别适用于不同的使用场景,选择取决于你的具体需求。在某些情况下,你可能会在应用程序中同时使用这两种集合类型,以便在不同的上下文中获得最佳性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值