首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的环形缓冲区(队列)

Java中的环形缓冲区(队列)
EN

Stack Overflow用户
提问于 2014-11-02 20:35:01
回答 2查看 1.3K关注 0票数 1

有人能给我解释一下,队列上下文中的(线性)环形缓冲区是如何工作的吗?如何使用环形缓冲区实现队列?它有什么好处?为什么要使用环形缓冲区?感谢大家的期待。

EN

回答 2

Stack Overflow用户

发布于 2014-11-02 21:04:26

循环缓冲区对于FIFO (先进先出)场景非常有用,因此对于具有固定最大大小的队列来说,它是一种很好的实现策略。

你通常有四个指针:

  • 1指向内存中的实际缓冲区
  • 1指向内存中的缓冲区末端(或者:缓冲区的大小)
  • 指向有效数据开头的指针(例如,指向数组的索引)
  • 指向有效数据结尾的指针。(即索引到数组中)

下面是添加元素(使用数组)时发生的情况:

如果在(endindex + 1) % bufferSize

  • if的位置添加元素,则会覆盖需要同时递增(startIndex + 1) % bufferSize

的元素

当您覆盖或删除缓冲区中的元素时,您总是对队列中最长的元素执行此操作。

有不同的用例伴随着这个概念而来:例如,内存中的日志。

有关更多实施细节,请参阅:http://en.wikipedia.org/wiki/Circular_buffer

票数 1
EN

Stack Overflow用户

发布于 2014-11-02 21:31:32

看一看java.util.ArrayDeque的实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26699342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档