有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java命名这个集合

这个问题是语言不可知的(尽管它假定一个问题同时是过程性的和面向对象的)

我很难找到具有以下行为的集合的标准名称:

-N个元件的固定容量,保持插入顺序

-元素添加到“尾部”

-无论何时添加项目,都会返回集合的标题(FIFO),尽管不一定要删除

-如果集合现在包含超过N个元素,则移除头部-否则它将保留在集合中(现在已向最终移除迈进了一步)

我经常使用这种结构来保持运行计数,即过去N帧的帧长度,以便提供“移动窗口”,我可以在其中进行平均、求和等


共 (1) 个答案

  1. # 1 楼答案

    对我来说,听起来很像circular buffer;例外情况是,您可能对添加/删除行为的定义不足或约束过度

    请注意,循环缓冲区有两个“视图”。一个是布局视图,它有一部分内存被写入,带有“head”和“tail”索引,还有一点逻辑,当tail位于head之前时,可以“环绕”它。另一个是“逻辑”视图,在该视图中,队列没有显示其布局方式,但肯定有有限的插槽,可以“扩展到”

    在进行计算的环境中,我喜欢一个长期存在的项目(尽管如果你不习惯这样的事情,cli界面有点陌生)。它被称为RoundRobinDatabase,其中每个数据库恰好存储一个值的N个副本(提供图形、平均值等)。它会根据多个参数调整下一个存储箱,但通常会根据时间推进存储箱。它通常是大量网络吞吐量图背后的工具,并且具有可配置的bin冲突解决方案等

    一般来说,对最后一个“一定数量”的条目敏感的算法通常被称为“滑动框”算法,但它关注的是算法,而不是数据结构:)