org.apache.commons.collections.buffer
Class CircularFifoBuffer<E>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by org.apache.commons.collections.buffer.BoundedFifoBuffer<E>
          extended by org.apache.commons.collections.buffer.CircularFifoBuffer<E>
All Implemented Interfaces:
Serializable, Iterable<E>, Collection<E>, BoundedCollection<E>, Buffer<E>

public class CircularFifoBuffer<E>
extends BoundedFifoBuffer<E>

CircularFifoBuffer is a first in first out buffer with a fixed size that replaces its oldest element if full.

The removal order of a CircularFifoBuffer is based on the insertion order; elements are removed in the same order in which they were added. The iteration order is the same as the removal order.

The add(Object), BoundedFifoBuffer.remove() and BoundedFifoBuffer.get() operations all perform in constant time. All other operations perform in linear time or worse.

Note that this implementation is not synchronized. The following can be used to provide synchronized access to your CircularFifoBuffer:

   Buffer fifo = BufferUtils.synchronizedBuffer(new CircularFifoBuffer());
 

This buffer prevents null objects from being added.

This class is Serializable from Commons Collections 3.1.

Since:
Commons Collections 3.0
Version:
$Revision: 1.1.1.1 $ $Date: 2005/05/23 04:33:52 $
Author:
Stefano Fornari, Matt Hall, John Watkinson, Stephen Colebourne
See Also:
Serialized Form

Constructor Summary
CircularFifoBuffer()
          Constructor that creates a buffer with the default size of 32.
CircularFifoBuffer(Collection<E> coll)
          Constructor that creates a buffer from the specified collection.
CircularFifoBuffer(int size)
          Constructor that creates a buffer with the specified size.
 
Method Summary
 boolean add(E element)
          If the buffer is full, the least recently added element is discarded so that a new element can be inserted.
 
Methods inherited from class org.apache.commons.collections.buffer.BoundedFifoBuffer
clear, get, isEmpty, isFull, iterator, maxSize, remove, size
 
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, remove, removeAll, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Collection
addAll, contains, containsAll, equals, hashCode, remove, removeAll, retainAll, toArray, toArray
 
Methods inherited from interface java.util.Collection
addAll, contains, containsAll, equals, hashCode, remove, removeAll, retainAll, toArray, toArray
 

Constructor Detail

CircularFifoBuffer

public CircularFifoBuffer()
Constructor that creates a buffer with the default size of 32.


CircularFifoBuffer

public CircularFifoBuffer(int size)
Constructor that creates a buffer with the specified size.

Parameters:
size - the size of the buffer (cannot be changed)
Throws:
IllegalArgumentException - if the size is less than 1

CircularFifoBuffer

public CircularFifoBuffer(Collection<E> coll)
Constructor that creates a buffer from the specified collection. The collection size also sets the buffer size

Parameters:
coll - the collection to copy into the buffer, may not be null
Throws:
NullPointerException - if the collection is null
Method Detail

add

public boolean add(E element)
If the buffer is full, the least recently added element is discarded so that a new element can be inserted.

Specified by:
add in interface Collection<E>
Overrides:
add in class BoundedFifoBuffer<E>
Parameters:
element - the element to add
Returns:
true, always


Copyright © 2005-2005 Apache Software Foundation, Matt Hall, John Watkinson. All Rights Reserved.