1

可能的重复:
包含 Java
Java 中最后 N 个元素的大小受限队列 - 环形缓冲区

我对上面的有界队列感兴趣,每当遇到对象插入时,如果插入会导致“溢出”,它将首先删除最旧的对象。我希望添加为 O(1) 并且内存使用量尽可能少。我正在考虑在 LinkedList 上覆盖 add 方法,但理想情况下,我会实现一个循环的、基于数组的列表,并捕获前/后指针。每当加法超过容量时,前指针前进,然后是后指针。有没有类似的实现?

4

1 回答 1

-1

链表浪费内存,因为 next 指针使用 mem,而 ArrayList 没有。

高性能实现基于 ArrayList 或更好的数组。如果您的循环缓冲区大小是固定的,您将使用数组。

我使用内部数组实现了一个循环缓冲区,带有开始和结束位置索引变量。我没有找到循环列表/缓冲区的实现,这就是我想要的。

实现起来并不难,但我建议使用大量单元测试用例,以证明您的 circ 缓冲区按预期工作。

于 2012-12-05T20:30:52.893 回答