0

我在理解 CircularFifoQueue 类的工作原理时遇到了一些麻烦。所以对于我的要求,我需要一个固定大小(大约 6000 个元素)的 FIFO 队列。起初我使用的是 ArrayDequeue,但它的表现相当糟糕。然后我阅读了有关 CircularFifoQueue 的信息并进行了尝试。我可以看到性能的提升,但它仍然不是很快。

我现在的问题是:如果队列已满并且我添加了一个元素会怎样?是否复制了整个底层数组?是否有一些偏移量,将被设置,例如

  head = (head + 1) % size;

如果是后者,那么我想我的算法表现不佳。

谢谢!

4

1 回答 1

3

文档中关于插入 a 的内容如下CircularFifoQueue

如果队列已满,则丢弃最近添加的元素,以便插入新元素。

在性能方面,需要注意的是,除了在恒定时间内执行的addremove、和方法之外peek,该数据结构的所有方法都在线性时间执行,或者更糟。polloffer

于 2015-06-23T15:22:39.950 回答