可能重复:
Size-limited queue that holds last N elements in Java
Java - Ring Buffer
我对上面的队列感兴趣,每当面对对象插入时,如果插入会导致“溢出”,则首先删除最旧的对象。我希望添加为O(1)并尽可能少地使用内存。我正在考虑在LinkedList上覆盖add方法,但理想情况下我会实现一个基于循环的循环列表,并捕获前/后指针。每当增加容量时,前指针前进,然后后指针前进。是否有类似的实现?
答案 0 :(得分:-1)
链表是浪费内存,因为下一个指针使用mem,而ArrayList则没有。
高性能实现基于ArrayList或更好的阵列。 如果您的循环缓冲区大小是固定的,您将使用数组。
我使用内部数组实现了一个循环缓冲区,其中包含起始位置索引变量和结束位置索引变量。我没有找到循环列表/缓冲区的实现,这就是我想要的。
实现起来并不是很困难,但我建议使用大量的单元测试用例来证明你的circ缓冲区按预期工作。