| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SKMC.Api.Common.Types
- {
- /// <summary>
- /// 边界队列
- /// 添加新元素时检查是否达到上限, 如果达到则先移除最早的一个元素
- /// </summary>
- /// <typeparam name="T"></typeparam>
- public class BoundedQueue<T>
- {
- private readonly Queue<T> queue;
- private readonly int maxSize;
- public BoundedQueue(int size)
- {
- maxSize = size;
- queue = new Queue<T>();
- }
- 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();
- }
- }
|