Class IntArrayQueue

  • All Implemented Interfaces:
    java.lang.Iterable<java.lang.Integer>, java.util.Collection<java.lang.Integer>, java.util.Queue<java.lang.Integer>

    public class IntArrayQueue
    extends java.util.AbstractQueue<java.lang.Integer>
    Queue of ints which stores the elements without boxing. Null is represented by a special nullValue().

    The IntArrayQueue.IntIterator is cached by default to avoid allocation unless directed to do so in the constructor.

    Note: This class is not threadsafe.

    • Constructor Summary

      Constructors 
      Constructor Description
      IntArrayQueue()
      Construct a new queue defaulting to MIN_CAPACITY capacity, DEFAULT_NULL_VALUE and cached iterators.
      IntArrayQueue​(int nullValue)
      Construct a new queue defaulting to MIN_CAPACITY capacity and cached iterators.
      IntArrayQueue​(int initialCapacity, int nullValue)
      Construct a new queue default to cached iterators.
      IntArrayQueue​(int initialCapacity, int nullValue, boolean shouldAvoidAllocation)
      Construct a new queue providing all the config options.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean add​(java.lang.Integer element)
      boolean addInt​(int element)
      Offer an element to the tail of the queue without boxing.
      int capacity()
      The current capacity for the collection.
      void clear()
      java.lang.Integer element()
      int elementInt()
      Peek at the element on the head of the queue without boxing.
      void forEach​(java.util.function.Consumer<? super java.lang.Integer> action)
      void forEachInt​(java.util.function.IntConsumer action)
      Iterate over the collection without boxing.
      private void increaseCapacity()  
      boolean isEmpty()
      IntArrayQueue.IntIterator iterator()
      int nullValue()
      The value representing a null element.
      boolean offer​(java.lang.Integer element)
      boolean offerInt​(int element)
      Offer an element to the tail of the queue without boxing.
      java.lang.Integer peek()
      int peekInt()
      Peek at the element on the head of the queue without boxing.
      java.lang.Integer poll()
      int pollInt()
      Poll the element from the head of the queue without boxing.
      java.lang.Integer remove()
      int removeInt()
      Remove the element at the head of the queue without boxing.
      int size()
      java.lang.String toString()
      • Methods inherited from class java.util.AbstractQueue

        addAll
      • Methods inherited from class java.util.AbstractCollection

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

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

        contains, containsAll, equals, hashCode, parallelStream, remove, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
    • Field Detail

      • DEFAULT_NULL_VALUE

        public static final int DEFAULT_NULL_VALUE
        Default representation of null for an element.
        See Also:
        Constant Field Values
      • MIN_CAPACITY

        public static final int MIN_CAPACITY
        Minimum capacity for the queue which must also be a power of 2.
        See Also:
        Constant Field Values
      • shouldAvoidAllocation

        private final boolean shouldAvoidAllocation
      • head

        private int head
      • tail

        private int tail
      • nullValue

        private final int nullValue
      • elements

        private int[] elements
    • Constructor Detail

      • IntArrayQueue

        public IntArrayQueue​(int nullValue)
        Construct a new queue defaulting to MIN_CAPACITY capacity and cached iterators.
        Parameters:
        nullValue - cannot be stored in the queue and used as a sentinel.
      • IntArrayQueue

        public IntArrayQueue​(int initialCapacity,
                             int nullValue)
        Construct a new queue default to cached iterators.
        Parameters:
        initialCapacity - for the queue which will be rounded up to the nearest power of 2.
        nullValue - which cannot be stored in the queue and used as a sentinel.
      • IntArrayQueue

        public IntArrayQueue​(int initialCapacity,
                             int nullValue,
                             boolean shouldAvoidAllocation)
        Construct a new queue providing all the config options.
        Parameters:
        initialCapacity - for the queue which will be rounded up to the nearest power of 2.
        nullValue - which cannot be stored in the queue and used as a sentinel.
        shouldAvoidAllocation - true to cache the iterator otherwise false to allocate a new iterator each time.
    • Method Detail

      • nullValue

        public int nullValue()
        The value representing a null element.
        Returns:
        value representing a null element.
      • capacity

        public int capacity()
        The current capacity for the collection.
        Returns:
        the current capacity for the collection.
      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<java.lang.Integer>
        Specified by:
        size in class java.util.AbstractCollection<java.lang.Integer>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Collection<java.lang.Integer>
        Overrides:
        isEmpty in class java.util.AbstractCollection<java.lang.Integer>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<java.lang.Integer>
        Overrides:
        clear in class java.util.AbstractQueue<java.lang.Integer>
      • offer

        public boolean offer​(java.lang.Integer element)
      • offerInt

        public boolean offerInt​(int element)
        Offer an element to the tail of the queue without boxing.
        Parameters:
        element - to be offered to the queue.
        Returns:
        will always be true as long as the underlying array can be expanded.
      • add

        public boolean add​(java.lang.Integer element)
        Specified by:
        add in interface java.util.Collection<java.lang.Integer>
        Specified by:
        add in interface java.util.Queue<java.lang.Integer>
        Overrides:
        add in class java.util.AbstractQueue<java.lang.Integer>
      • addInt

        public boolean addInt​(int element)
        Offer an element to the tail of the queue without boxing.
        Parameters:
        element - to be offered to the queue.
        Returns:
        will always be true as long as the underlying array can be expanded.
      • peek

        public java.lang.Integer peek()
      • peekInt

        public int peekInt()
        Peek at the element on the head of the queue without boxing.
        Returns:
        the element at the head of the queue without removing it.
      • poll

        public java.lang.Integer poll()
      • pollInt

        public int pollInt()
        Poll the element from the head of the queue without boxing.
        Returns:
        the element at the head of the queue removing it. If empty then nullValue.
      • remove

        public java.lang.Integer remove()
        Specified by:
        remove in interface java.util.Queue<java.lang.Integer>
        Overrides:
        remove in class java.util.AbstractQueue<java.lang.Integer>
      • element

        public java.lang.Integer element()
        Specified by:
        element in interface java.util.Queue<java.lang.Integer>
        Overrides:
        element in class java.util.AbstractQueue<java.lang.Integer>
      • elementInt

        public int elementInt()
        Peek at the element on the head of the queue without boxing.
        Returns:
        the element at the head of the queue without removing it.
        Throws:
        java.util.NoSuchElementException - if the queue is empty.
      • removeInt

        public int removeInt()
        Remove the element at the head of the queue without boxing.
        Returns:
        the element at the head of the queue.
        Throws:
        java.util.NoSuchElementException - if the queue is empty.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.util.AbstractCollection<java.lang.Integer>
      • forEach

        public void forEach​(java.util.function.Consumer<? super java.lang.Integer> action)
      • forEachInt

        public void forEachInt​(java.util.function.IntConsumer action)
        Iterate over the collection without boxing.
        Parameters:
        action - to be taken for each element.
      • iterator

        public IntArrayQueue.IntIterator iterator()
        Specified by:
        iterator in interface java.util.Collection<java.lang.Integer>
        Specified by:
        iterator in interface java.lang.Iterable<java.lang.Integer>
        Specified by:
        iterator in class java.util.AbstractCollection<java.lang.Integer>
      • increaseCapacity

        private void increaseCapacity()