UniqueQueue.cs 777 B

12345678910111213141516171819202122232425262728293031323334353637
  1. using System.Collections.Generic;
  2. namespace GFGGame
  3. {
  4. /// <summary>
  5. /// 唯一队列
  6. /// </summary>
  7. /// <typeparam name="T"></typeparam>
  8. public class UniqueQueue<T>
  9. {
  10. private Queue<T> queue = new Queue<T>();
  11. private HashSet<T> set = new HashSet<T>();
  12. public bool Contains(T item)
  13. {
  14. return set.Contains(item);
  15. }
  16. public void Enqueue(T item)
  17. {
  18. if (!set.Contains(item))
  19. {
  20. queue.Enqueue(item);
  21. set.Add(item);
  22. }
  23. }
  24. public T Dequeue()
  25. {
  26. T item = queue.Dequeue();
  27. set.Remove(item);
  28. return item;
  29. }
  30. public int Count => queue.Count;
  31. }
  32. }