我正在尝试查找(或编写)表示固定大小,非阻塞,自动丢弃FIFO队列的Java类。 (例如,如果队列的容量为100,则放置项目101会移除项目1,然后成功附加项目101.)this question的答案似乎有帮助,但我有一个额外的约束 - 我需要它快速,因为容量约为100-1000。
我的队列中的项目只是Floats,因此使用链接问题中描述的AutoDiscardingDeque<Float>
之类的内容通常更有效,或者只使用float[]
和System.arraycopy()
{{1}}操纵来处理它?</ p>
或者,有没有更好的解决方案,我没有想过?
答案 0 :(得分:2)
如果您只需要使用浮点数,那么是float[]
将是实现中的最佳选择。您根本不需要复制数组 - 只需保持“开始位置”和“结束位置”。您已经知道了容量,因此您可以创建数组以便从中开始并且永远不会让它变为现实。
请注意,我建议您不要在此处使用float[]
而不是 - 只是您可以使用 a {{1}实现队列 }}。当然,这意味着你不能轻易地实现你可能想要它的float[]
,而不会产生装箱/拆箱成本...但是如果你只是在客户代码中使用具体的类很开心,你最终会节省成本。
答案 1 :(得分:1)
如果您认为您希望在结构上执行许多与数学相关的函数,特别是统计函数,如mean,max,min等,那么您可以使用Apache Commons Math中的DescriptiveStatistics(http:// commons.apache.org/math/userguide/stat.html#a1.2_Descriptive_statistics)。您可以设置窗口大小,它将自动维护您的元素。然而,它需要双打,而不是浮动,所以它可能不是你的完美解决方案。
答案 2 :(得分:0)
我需要快速,能力 约100-1000
请指定您需要快速进行哪些操作?实施对于如何使用它非常明智。 如果您需要经常通过索引访问它,那么上述解决方案似乎已经足够了