专业编程基础技术教程

网站首页 > 基础教程 正文

C# 实现固定长度的队列Queue

ccvgpt 2024-08-18 14:26:49 基础教程 12 ℃

在C#中,您可以使用Queue<T>类来创建一个固定长度的队列。

以下是一个示例代码,演示如何实现一个固定长度的队列:

C# 实现固定长度的队列Queue

using System;
using System.Collections.Generic;

public class FixedLengthQueue<T>
{
    private Queue<T> queue;
    private int maxLength;
		// 初始化
    public FixedLengthQueue(int maxLength)
    {
        this.queue = new Queue<T>();
        this.maxLength = maxLength;
    }
		/// <summary>
    /// 添加元素
    /// 超过指定长度,会先移除最早的元素,再添加新元素
    /// </summary>
    /// <param name="item"></param>
    public void Enqueue(T item)
    {
        if (queue.Count >= maxLength)
        {
            queue.Dequeue();
        }
        queue.Enqueue(item);
    }
		// 移除最早的元素
    public T Dequeue()
    {
        return queue.Dequeue();
    }
		// 返回队列的长度
    public int Count
    {
        get { return queue.Count; }
    }
}

// 使用样例
public class Program
{
    public static void Main()
    {
        FixedLengthQueue<int> queue = new FixedLengthQueue<int>(5);

        // 添加元素到队列
        queue.Enqueue(1);
        queue.Enqueue(2);
        queue.Enqueue(3);
        queue.Enqueue(4);
        queue.Enqueue(5);

        // 队列已满,再添加一个元素会移除最早的元素
        queue.Enqueue(6);

        // 输出队列中的元素
        while (queue.Count > 0)
        {
            int item = queue.Dequeue();
            Console.WriteLine(item);
        }
    }
}

在这个示例中,我们创建了一个FixedLengthQueue<T>类,它使用Queue<T>作为内部实现,并在构造函数中接受一个maxLength参数,表示队列的最大长度。

Enqueue方法中,我们首先检查队列的长度是否已达到最大长度。

如果是,我们使用Dequeue方法移除最早的元素。

然后,我们使用Enqueue方法将新的元素添加到队列中。

Dequeue方法中,我们直接调用Queue<T>Dequeue方法来移除并返回队列中的第一个元素。

Main测试方法中,我们创建了一个固定长度为5的整数队列,并添加了6个元素。

由于队列的长度限制为5,当添加第6个元素时,最早的元素将被移除。

然后,我们使用Dequeue方法逐个输出队列中的元素。

C# 使用async/await异步,用队列做缓存,异步记录日志的简单例子

Tags:

最近发表
标签列表