为此系列命名

bfi*_*man 0 java collections

这个问题与语言无关(尽管它假设一个既是程序性的也是OO).

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

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

-Elements被添加到'尾巴'

- 无论何时添加项目,都会返回集合的头部(FIFO),但不一定要删除.

- 如果该集合现在包含多于N个元素,则删除头部 - 否则它将保留在集合中(现在已朝着最终移除的方向前进了一步).

我经常使用这种结构来保持运行计数 - 即过去N帧的帧长度,以便提供我可以平均,总和等的"移动窗口".

Edw*_*uck 5

对我来说听起来非常类似于循环缓冲区 ; 除了您可能未定义或过度约束添加/删除行为.

请注意,循环缓冲区有两个"视图".一个是布局视图,其中有一段内存被写入,带有"head"和"tail"索引,以及当尾部"在"头部之前"缠绕"一些逻辑.另一个是一个"逻辑"视图,在这个视图中你有一个队列,它不会暴露它的布局方式,但肯定有一个有限数量的插槽可以"增长到".

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

一般来说,对最后"一些"条目敏感的算法通常被称为"滑动框"算法,但是那些关注的是算法,而不是数据结构:)