我在理解CircularFifoQueue類如何工作方面有點麻煩。所以對於我的要求,我需要一個固定尺寸的FIFO隊列(約6000個元素)。首先我使用了ArrayDequeue,但它表現得相當糟糕。然後我閱讀了CircularFifoQueue並試用了它。我可以看到性能提升,但仍然不快。Java CircularFifoQueue的性能
我的問題是現在:如果隊列滿了,我添加一個元素會發生什麼?整個底層數組是否被複制?是否有一些偏移量會被設置,例如
head = (head + 1) % size;
如果後者是這種情況,那麼我想我的算法表現不佳。
謝謝!
你有沒有試過並保證它?據我可以看到[源](https://commons.apache.org/proper/commons-collections/cobertura/org.apache.commons.collections4.queue.CircularFifoQueue.html):當添加一個新的元素到一個完整列表remove()方法被調用,從而刪除一個元素。在add()的javadoc中也記錄了這種行爲。 – bratkartoffel
@bratkartoffel是的,我做過了,大部分時間用於執行offer()方法 – hh32