using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SKMC.Api.Common.Types { /// /// 边界队列 /// 添加新元素时检查是否达到上限, 如果达到则先移除最早的一个元素 /// /// public class BoundedQueue { private readonly Queue queue; private readonly int maxSize; public BoundedQueue(int size) { maxSize = size; queue = new Queue(); } public void Enqueue(T item) { if (queue.Count >= maxSize) { queue.Dequeue(); } queue.Enqueue(item); } public T Dequeue() { return queue.Dequeue(); } public T Peek() { return queue.Peek(); } public int Count { get { return queue.Count; } } public T[] ToArray() => queue.ToArray(); } }