Package arc.struct
Class IntQueue
java.lang.Object
arc.struct.IntQueue
Queue for ints.
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddFirst(int object) Prepend given object to the head.voidaddLast(int object) Append given object to the tail.voidclear()Removes all values from this queue; O(1).voidvoidensureCapacity(int additional) Increases the size of the backing array to accommodate the specified number of additional items.booleanintfirst()Returns the first (head) item in the queue (without removing it).intget(int index) Retrieves the value in queue without removing it.inthashCode()intindexOf(int value) Returns the index of first occurrence of value in the queue, or -1 if no such value exists.booleanisEmpty()Returns true if the queue is empty.iterator()Returns an iterator for the items in this queue.intlast()Returns the last (tail) item in the queue (without removing it).intRemove the first item from the queue.intremoveIndex(int index) Removes and returns the item at the specified index.intRemove the last item from the queue.booleanremoveValue(int value) Removes the first instance of the specified value in the queue.protected voidresize(int newSize) Resize backing array.voidset(int index, int value) int[]shrink()Reduces the size of the backing array to the size of the actual items.toString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
size
public int sizeNumber of elements in the queue. -
values
public int[] valuesContains the values in the queue. Head and tail indices go in a circle around this array, wrapping at the end. -
head
protected int headIndex of first element. Logically smaller than tail. Unless empty, it points to a valid element inside queue. -
tail
protected int tailIndex of last element. Logically bigger than head. Usually points to an empty position, but points to the head when full (size == values.length).
-
-
Constructor Details
-
IntQueue
public IntQueue()Creates a new Queue which can hold 16 values without needing to resize backing array. -
IntQueue
public IntQueue(int initialSize) Creates a new Queue which can hold the specified number of values without needing to resize backing array.
-
-
Method Details
-
each
-
addLast
public void addLast(int object) Append given object to the tail. (enqueue to tail) Unless backing array needs resizing, operates in O(1) time.- Parameters:
object- can be null
-
addFirst
public void addFirst(int object) Prepend given object to the head. (enqueue to head) Unless backing array needs resizing, operates in O(1) time.- Parameters:
object- can be null- See Also:
-
shrink
public int[] shrink()Reduces the size of the backing array to the size of the actual items. This is useful to release memory when many items have been removed, or if it is known that more items will not be added.- Returns:
values
-
ensureCapacity
public void ensureCapacity(int additional) Increases the size of the backing array to accommodate the specified number of additional items. Useful before adding many items to avoid multiple backing array resizes. -
resize
protected void resize(int newSize) Resize backing array. newSize must be bigger than current size. -
removeFirst
public int removeFirst()Remove the first item from the queue. (dequeue from head) Always O(1).- Returns:
- removed object
- Throws:
NoSuchElementException- when queue is empty
-
removeLast
public int removeLast()Remove the last item from the queue. (dequeue from tail) Always O(1).- Returns:
- removed object
- Throws:
NoSuchElementException- when queue is empty- See Also:
-
indexOf
public int indexOf(int value) Returns the index of first occurrence of value in the queue, or -1 if no such value exists.- Returns:
- An index of first occurrence of value in queue or -1 if no such value exists
-
removeValue
public boolean removeValue(int value) Removes the first instance of the specified value in the queue.- Returns:
- true if value was found and removed, false otherwise
-
removeIndex
public int removeIndex(int index) Removes and returns the item at the specified index. -
isEmpty
public boolean isEmpty()Returns true if the queue is empty. -
first
public int first()Returns the first (head) item in the queue (without removing it).- Throws:
NoSuchElementException- when queue is empty- See Also:
-
last
public int last()Returns the last (tail) item in the queue (without removing it).- Throws:
NoSuchElementException- when queue is empty- See Also:
-
get
public int get(int index) Retrieves the value in queue without removing it. Indexing is from the front to back, zero based. Therefore get(0) is the same asfirst().- Throws:
IndexOutOfBoundsException- when the index is negative or >= size
-
set
public void set(int index, int value) -
clear
public void clear()Removes all values from this queue; O(1). -
hashCode
public int hashCode() -
equals
-
toString
-
iterator
Returns an iterator for the items in this queue. Remove is supported. Note that the same iterator instance is returned each time this method is called. Use theIntQueue.IntQueueIteratorconstructor for nested or multithreaded iteration.
-