BoundedFifoBuffer和CircularFifoBuffer之间的区别?

时间:2013-02-01 09:09:15

标签: java collections

apache common collections之间有什么区别:

  1. CircularFifoBuffer
  2. BoundedFifoBuffer
  3. 好的,第一个在完整时删除最旧的条目,另一个以相同的顺序删除条目,就像进来一样。但它不是一样的吗?

3 个答案:

答案 0 :(得分:5)

CircularFifoBuffer延伸BoundedFifoBuffer。它仅覆盖单个方法 - add

public boolean add(Object element) {
    if (isFull()) {
        remove();
    }
    return super.add(element);
}

所以唯一的区别在于BoundedFifoBuffer在它已满时抛出异常,并且您尝试添加新元素,而CircularFifoBuffer删除最旧元素。

答案 1 :(得分:3)

假设您将n个项目放在索引为1,2,3 - n

的缓冲区中

现在在CircularFifoBuffer& BoundedFifoBuffer空间已满。

在有界缓冲区中,因为第n个元素已满,它会说整个缓冲区已满。

在CircularFifoBuffer中,如果缓冲区已满,则最近添加的元素将被丢弃,以便可以插入新元素。 因此,如果第n个元素已满,则会将下一个元素放在第一个索引中。

答案 2 :(得分:2)

BoundedFifoBuffer 已满时,它会阻止插入另一个元素。但是在 CircularFifoBuffer 中,它会删除最长的一个,一旦它已满。