C# 队列及固定长度的队列

1、先进先出,存储不限类型,不能获取到指定的位置,取出元素后,自动删除

 Queue q = new Queue();

(1)插入

q.Enqueue("Hello");

(2)取出

q.Dequeue();

(3)计算数量

q.Count()

(4)返回最旧的元素,该元素位于开头,但不将其从中删除 Queue

q.Peek();

接下来的遍历,清空与List相同

Clear()

从 Queue 中移除所有对象。

Clone()

创建 Queue 的浅表副本。

Contains(Object)

确定某元素是否在 Queue 中。

CopyTo(Array, Int32)

从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。

Dequeue()

移除并返回位于 Queue 开始处的对象。

Enqueue(Object)

将对象添加到 Queue 的结尾处。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetEnumerator()

返回循环访问 Queue 的枚举数。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Peek()

返回位于 Queue 开始处的对象但不将其移除。

Synchronized(Queue)

返回将包装原始队列并且是线程安全的新的 Queue

ToArray()

将 Queue 元素复制到新数组。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
TrimToSize()

将容量设置为 Queue 中元素的实际数目。

Count

获取 Queue 中包含的元素数。

IsSynchronized

获取一个值,该值指示是否同步对 Queue 的访问(线程安全)。

SyncRoot

获取可用于同步对 Queue 的访问的对象。

固定长度的队列,每次往里边插入一个数据,则删除旧数据,保持队列中始终为10个

直接上代码

/// <summary>
/// 表示对象的先进先出集合并固定长度
/// </summary>
/// <typeparam name="T"></typeparam>
public class QueueLength<T> : Queue<T>
{
    int length = 1;

    /// <summary>
    /// 初始化类的新实例,并指定长度
    /// </summary>
    /// <param name="length">长度</param>
    public QueueLength(int length) : base(length)
    {
        this.length = length;
    }

    /// <summary>
    /// 将对象添加到结尾处
    /// </summary>
    /// <param name="item">要添加的对象</param>
    public new void Enqueue(T item)
    {
        if (base.Count == length)
            base.Dequeue();

        base.Enqueue(item);
    }

}

具体使用:

 QueueLength<double> q = new QueueLength<double>(10);
q.Enqueue(1);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值