Java CircularFifoQueue的性能

时间:2015-06-23 15:11:17

标签: java apache-commons-collection

我在理解CircularFifoQueue Class的工作原理时遇到了一些麻烦。所以对于我的要求,我需要一个固定大小的FIFO队列(大约6000个元素)。在frist我正在使用ArrayDequeue,但它的表现相当糟糕。然后我读了一下CircularFifoQueue并试了一下。我可以看到性能的提升,但它仍然不快。

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

  head = (head + 1) % size;

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

谢谢!

1 个答案:

答案 0 :(得分:3)

docs说明了有关CircularFifoQueue

中插入的内容
  

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

在性能方面,需要注意的是,除执行的addremovepeekpolloffer方法外在恒定时间内,此数据结构的所有方法都在线性时间内执行,或者更糟。