Package org.agrona.collections
Class IntArrayQueue
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractQueue<java.lang.Integer>
-
- org.agrona.collections.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 specialnullValue()
.The
IntArrayQueue.IntIterator
is cached by default to avoid allocation unless directed to do so in the constructor.Note: This class is not threadsafe.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
IntArrayQueue.IntIterator
SpecialisedIterator
from which the value can be retrieved without boxing viaIntArrayQueue.IntIterator.nextValue()
.
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_NULL_VALUE
Default representation of null for an element.private int[]
elements
private int
head
private IntArrayQueue.IntIterator
iterator
static int
MIN_CAPACITY
Minimum capacity for the queue which must also be a power of 2.private int
nullValue
private boolean
shouldAvoidAllocation
private int
tail
-
Constructor Summary
Constructors Constructor Description IntArrayQueue()
Construct a new queue defaulting toMIN_CAPACITY
capacity,DEFAULT_NULL_VALUE
and cached iterators.IntArrayQueue(int nullValue)
Construct a new queue defaulting toMIN_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.AbstractCollection
contains, containsAll, remove, removeAll, retainAll, 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
-
iterator
private IntArrayQueue.IntIterator iterator
-
-
Constructor Detail
-
IntArrayQueue
public IntArrayQueue()
Construct a new queue defaulting toMIN_CAPACITY
capacity,DEFAULT_NULL_VALUE
and cached iterators.
-
IntArrayQueue
public IntArrayQueue(int nullValue)
Construct a new queue defaulting toMIN_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 interfacejava.util.Collection<java.lang.Integer>
- Specified by:
size
in classjava.util.AbstractCollection<java.lang.Integer>
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfacejava.util.Collection<java.lang.Integer>
- Overrides:
isEmpty
in classjava.util.AbstractCollection<java.lang.Integer>
-
clear
public void clear()
- Specified by:
clear
in interfacejava.util.Collection<java.lang.Integer>
- Overrides:
clear
in classjava.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 interfacejava.util.Collection<java.lang.Integer>
- Specified by:
add
in interfacejava.util.Queue<java.lang.Integer>
- Overrides:
add
in classjava.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 interfacejava.util.Queue<java.lang.Integer>
- Overrides:
remove
in classjava.util.AbstractQueue<java.lang.Integer>
-
element
public java.lang.Integer element()
- Specified by:
element
in interfacejava.util.Queue<java.lang.Integer>
- Overrides:
element
in classjava.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 classjava.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 interfacejava.util.Collection<java.lang.Integer>
- Specified by:
iterator
in interfacejava.lang.Iterable<java.lang.Integer>
- Specified by:
iterator
in classjava.util.AbstractCollection<java.lang.Integer>
-
increaseCapacity
private void increaseCapacity()
-
-