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) | |
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);