有人能给我解释一下,队列上下文中的(线性)环形缓冲区是如何工作的吗?如何使用环形缓冲区实现队列?它有什么好处?为什么要使用环形缓冲区?感谢大家的期待。
发布于 2014-11-02 21:04:26
循环缓冲区对于FIFO (先进先出)场景非常有用,因此对于具有固定最大大小的队列来说,它是一种很好的实现策略。
你通常有四个指针:
下面是添加元素(使用数组)时发生的情况:
如果在(endindex + 1) % bufferSize
(startIndex + 1) % bufferSize的元素
当您覆盖或删除缓冲区中的元素时,您总是对队列中最长的元素执行此操作。
有不同的用例伴随着这个概念而来:例如,内存中的日志。
有关更多实施细节,请参阅:http://en.wikipedia.org/wiki/Circular_buffer
发布于 2014-11-02 21:31:32
看一看java.util.ArrayDeque的实现。
https://stackoverflow.com/questions/26699342
复制相似问题