Class CircularFifoQueue<E>

  • Type Parameters:
    E - the type of elements in this collection
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.Queue<E>, BoundedCollection<E>

    public class CircularFifoQueue<E>
    extends java.util.AbstractCollection<E>
    implements java.util.Queue<E>, BoundedCollection<E>, java.io.Serializable
    CircularFifoQueue is a first-in first-out queue with a fixed size that replaces its oldest element if full.

    The removal order of a CircularFifoQueue 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), remove(), peek(), poll(), offer(Object) operations all perform in constant time. All other operations perform in linear time or worse.

    This queue prevents null objects from being added.

    Since:
    4.0
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      CircularFifoQueue()
      Constructor that creates a queue with the default size of 32.
      CircularFifoQueue​(int size)
      Constructor that creates a queue with the specified size.
      CircularFifoQueue​(java.util.Collection<? extends E> coll)
      Constructor that creates a queue from the specified collection.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean add​(E element)
      Adds the given element to this queue.
      void clear()
      Clears this queue.
      E element()  
      E get​(int index)
      Returns the element at the specified position in this queue.
      boolean isAtFullCapacity()
      Returns true if the capacity limit of this queue has been reached, i.e.
      boolean isEmpty()
      Returns true if this queue is empty; false otherwise.
      boolean isFull()
      Returns true if this collection is full and no new elements can be added.
      java.util.Iterator<E> iterator()
      Returns an iterator over this queue's elements.
      int maxSize()
      Gets the maximum size of the collection (the bound).
      boolean offer​(E element)
      Adds the given element to this queue.
      E peek()  
      E poll()  
      E remove()  
      int size()
      Returns the number of elements stored in the queue.
      • Methods inherited from class java.util.AbstractCollection

        addAll, contains, containsAll, remove, removeAll, retainAll, toArray, toArray, toString
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        addAll, contains, containsAll, equals, hashCode, parallelStream, remove, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
    • Constructor Detail

      • CircularFifoQueue

        public CircularFifoQueue()
        Constructor that creates a queue with the default size of 32.
      • CircularFifoQueue

        public CircularFifoQueue​(int size)
        Constructor that creates a queue with the specified size.
        Parameters:
        size - the size of the queue (cannot be changed)
        Throws:
        java.lang.IllegalArgumentException - if the size is < 1
      • CircularFifoQueue

        public CircularFifoQueue​(java.util.Collection<? extends E> coll)
        Constructor that creates a queue from the specified collection. The collection size also sets the queue size.
        Parameters:
        coll - the collection to copy into the queue, may not be null
        Throws:
        java.lang.NullPointerException - if the collection is null
    • Method Detail

      • size

        public int size()
        Returns the number of elements stored in the queue.
        Specified by:
        size in interface java.util.Collection<E>
        Specified by:
        size in class java.util.AbstractCollection<E>
        Returns:
        this queue's size
      • isEmpty

        public boolean isEmpty()
        Returns true if this queue is empty; false otherwise.
        Specified by:
        isEmpty in interface java.util.Collection<E>
        Overrides:
        isEmpty in class java.util.AbstractCollection<E>
        Returns:
        true if this queue is empty
      • isFull

        public boolean isFull()
        Returns true if this collection is full and no new elements can be added.

        A CircularFifoQueue can never be full, thus this returns always false.

        Specified by:
        isFull in interface BoundedCollection<E>
        Returns:
        always returns false
      • isAtFullCapacity

        public boolean isAtFullCapacity()
        Returns true if the capacity limit of this queue has been reached, i.e. the number of elements stored in the queue equals its maximum size.
        Returns:
        true if the capacity limit has been reached, false otherwise
        Since:
        4.1
      • maxSize

        public int maxSize()
        Gets the maximum size of the collection (the bound).
        Specified by:
        maxSize in interface BoundedCollection<E>
        Returns:
        the maximum number of elements the collection can hold
      • clear

        public void clear()
        Clears this queue.
        Specified by:
        clear in interface java.util.Collection<E>
        Overrides:
        clear in class java.util.AbstractCollection<E>
      • add

        public boolean add​(E element)
        Adds the given element to this queue. If the queue is full, the least recently added element is discarded so that a new element can be inserted.
        Specified by:
        add in interface java.util.Collection<E>
        Specified by:
        add in interface java.util.Queue<E>
        Overrides:
        add in class java.util.AbstractCollection<E>
        Parameters:
        element - the element to add
        Returns:
        true, always
        Throws:
        java.lang.NullPointerException - if the given element is null
      • get

        public E get​(int index)
        Returns the element at the specified position in this queue.
        Parameters:
        index - the position of the element in the queue
        Returns:
        the element at position index
        Throws:
        java.util.NoSuchElementException - if the requested position is outside the range [0, size)
      • offer

        public boolean offer​(E element)
        Adds the given element to this queue. If the queue is full, the least recently added element is discarded so that a new element can be inserted.
        Specified by:
        offer in interface java.util.Queue<E>
        Parameters:
        element - the element to add
        Returns:
        true, always
        Throws:
        java.lang.NullPointerException - if the given element is null
      • poll

        public E poll()
        Specified by:
        poll in interface java.util.Queue<E>
      • element

        public E element()
        Specified by:
        element in interface java.util.Queue<E>
      • peek

        public E peek()
        Specified by:
        peek in interface java.util.Queue<E>
      • remove

        public E remove()
        Specified by:
        remove in interface java.util.Queue<E>
      • iterator

        public java.util.Iterator<E> iterator()
        Returns an iterator over this queue's elements.
        Specified by:
        iterator in interface java.util.Collection<E>
        Specified by:
        iterator in interface java.lang.Iterable<E>
        Specified by:
        iterator in class java.util.AbstractCollection<E>
        Returns:
        an iterator over this queue's elements