org.apache.commons.collections.buffer

## Class CircularFifoBuffer

- java.lang.Object
- - java.util.AbstractCollection
  - - org.apache.commons.collections.buffer.BoundedFifoBuffer
    - - org.apache.commons.collections.buffer.CircularFifoBuffer

- All Implemented Interfaces:
    Serializable, Iterable, Collection, BoundedCollection, Buffer

      public class CircularFifoBuffer
      extends BoundedFifoBuffer

  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: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
  Author:
    Stefano Fornari, Stephen Colebourne
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CircularFifoBuffer()` Constructor that creates a buffer with the default size of 32.
    `CircularFifoBuffer(Collection coll)` Constructor that creates a buffer from the specified collection.
    `CircularFifoBuffer(int size)` Constructor that creates a buffer with the specified size.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `add(Object 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`

- - ### 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 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(Object 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`
      Overrides:
        `add` in class `BoundedFifoBuffer`
      Parameters:
        `element` - the element to add
      Returns:
        true, always

Copyright © 2001–2015 The Apache Software Foundation. All rights reserved.