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