@Generated(date="2017-07-11T19:16:24+0200",
value="KTypeArrayDeque.java")
public class ObjectArrayDeque<KType>
extends AbstractObjectCollection<KType>
implements ObjectDeque<KType>, ObjectIndexedContainer<KType>, java.lang.Cloneable
ArraySizingStrategy
and may be expensive if they move around really large chunks of memory.
This dequeue is also a ObjectIndexedContainer, where index 0 is the head of the queue, and
size() - 1 index is the last element.
A brief comparison of the API against the Java Collections framework:
| java.util.ArrayDeque | ObjectArrayDeque |
|---|---|
| addFirst | addFirst |
| addLast | addLast |
| removeFirst | removeLast |
| getFirst | getFirst |
| getLast | getLast |
| removeFirstOccurrence, removeLastOccurrence | removeFirstOccurrence, removeLastOccurrence |
| size | size |
| Object[] toArray() | Object[] toArray() |
| iterator | cursor over values |
| other methods inherited from Stack, Queue | not implemented |
| Modifier and Type | Class and Description |
|---|---|
class |
ObjectArrayDeque.DescendingValueIterator
An iterator implementation for
descendingIterator(). |
class |
ObjectArrayDeque.ValueIterator
An iterator implementation for
iterator(). |
| Modifier and Type | Field and Description |
|---|---|
java.lang.Object[] |
buffer
Internal array for storing elements.
|
protected IteratorPool<ObjectCursor<KType>,ObjectArrayDeque.DescendingValueIterator> |
descendingValueIteratorPool
internal pool of DescendingValueIterator (must be created in constructor)
|
int |
head
The index of the element at the head of the deque or an
arbitrary number equal to tail if the deque is empty.
|
protected ArraySizingStrategy |
resizer
Buffer resizing strategy.
|
int |
tail
The index at which the next element would be added to the tail
of the deque.
|
protected IteratorPool<ObjectCursor<KType>,ObjectArrayDeque.ValueIterator> |
valueIteratorPool
internal pool of ValueIterator (must be created in constructor)
|
containsNegateTestPredicate, containsTestPredicate, negatePredicate, testContainer, testPredicate| Constructor and Description |
|---|
ObjectArrayDeque()
Default constructor.
|
ObjectArrayDeque(int initialCapacity)
Create with default sizing strategy and the given initial capacity.
|
ObjectArrayDeque(int initialCapacity,
ArraySizingStrategy resizer)
Create with a custom buffer resizing strategy.
|
ObjectArrayDeque(ObjectContainer<? extends KType> container)
Creates a new deque from elements of another container, appending them
at the end of this deque.
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(KType e1)
Adds an element to the end of this container (the last index is incremented by one).
|
int |
addFirst(java.lang.Iterable<? extends ObjectCursor<? extends KType>> iterable)
Inserts all elements from the given iterable to the front of this deque.
|
void |
addFirst(KType... elements)
Vararg-signature method for adding elements at the front of this deque.
|
void |
addFirst(KType e1)
Inserts the specified element at the front of this deque.
|
int |
addFirst(ObjectContainer<? extends KType> container)
Inserts all elements from the given container to the front of this deque.
|
int |
addLast(java.lang.Iterable<? extends ObjectCursor<? extends KType>> iterable)
Inserts all elements from the given iterable to the end of this deque.
|
void |
addLast(KType... elements)
Vararg-signature method for adding elements at the end of this deque.
|
void |
addLast(KType e1)
Inserts the specified element at the end of this deque.
|
int |
addLast(ObjectContainer<? extends KType> container)
Inserts all elements from the given container to the end of this deque.
|
int |
bufferIndexOf(KType e1)
Return the index of the first element equal to
e1. |
int |
capacity()
Return the maximum number of elements this container is guaranteed to hold without reallocating.
|
void |
clear()
Removes all elements from this collection.
|
ObjectArrayDeque<KType> |
clone()
Clone this object.
|
boolean |
contains(KType e)
Lookup a given element in the container.
|
<T extends ObjectPredicate<? super KType>> |
descendingForEach(T predicate)
Applies a
predicate to container elements as long, as the predicate
returns true. |
<T extends ObjectProcedure<? super KType>> |
descendingForEach(T procedure)
Applies
procedure to all elements of this deque, tail to head. |
ObjectArrayDeque.DescendingValueIterator |
descendingIterator()
Returns an iterator over the values of this deque (in tail to head order).
|
protected void |
ensureBufferSpace(int expectedAdditions)
Ensures the internal buffer has enough free slots to store
expectedAdditions. |
boolean |
equals(java.lang.Object obj) |
<T extends ObjectPredicate<? super KType>> |
forEach(T predicate)
Applies a
predicate to container elements, as long as the predicate
returns true. |
<T extends ObjectProcedure<? super KType>> |
forEach(T procedure)
Applies a
procedure to all container elements. |
<T extends ObjectPredicate<? super KType>> |
forEach(T predicate,
int fromIndex,
int toIndex)
Applies
predicate to a slice of the container,
fromIndex, inclusive, to toIndex,
exclusive, or until predicate returns false. |
<T extends ObjectProcedure<? super KType>> |
forEach(T procedure,
int fromIndex,
int toIndex)
Applies
procedure to a slice of the container,
fromIndex, inclusive, to toIndex, exclusive. |
static <KType> ObjectArrayDeque<KType> |
from(KType... elements)
Create a new deque by pushing a variable number of arguments to the end of it.
|
static <KType> ObjectArrayDeque<KType> |
from(ObjectContainer<KType> container)
Create a new deque by pushing a variable number of arguments to the end of it.
|
KType |
get(int index)
The position is relative to the head,
i.e w.r.t the
ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position. |
KType |
getFirst()
Retrieves, but does not remove, the first element of this deque.
|
KType |
getLast()
Retrieves, but does not remove, the last element of this deque.
|
int |
hashCode() |
int |
indexOf(KType e1)
Returns the index of the first occurrence of the specified element in this list,
or -1 if this list does not contain the element.
|
void |
insert(int index,
KType e1)
This operation is not supported on array deques, throwing UnsupportedOperationException.
|
ObjectArrayDeque.ValueIterator |
iterator()
Returns an iterator over the values of this deque (in head to tail order).
|
int |
lastBufferIndexOf(KType e1)
Return the index of the last element equal to
e1. |
int |
lastIndexOf(KType e1)
Returns the index of the last occurrence of the specified element in this list,
or -1 if this list does not contain the element.
|
static <KType> ObjectArrayDeque<KType> |
newInstance()
Returns a new object of this class with no need to declare generic type (shortcut
instead of using a constructor).
|
static <KType> ObjectArrayDeque<KType> |
newInstance(int initialCapacity)
Returns a new object of this class with no need to declare generic type (shortcut
instead of using a constructor).
|
void |
release()
Release internal buffers of this deque and reallocate the smallest buffer possible.
|
KType |
remove(int index)
Removes the element at the specified position in this list and returns it.
|
int |
removeAll(KType e1)
Removes all occurrences of
e from this collection. |
int |
removeAll(ObjectPredicate<? super KType> predicate)
Removes all elements in this collection for which the
given predicate returns
true. |
KType |
removeFirst()
Retrieves and removes the first element of this deque.
|
int |
removeFirst(KType e1)
Removes the first element that equals
e1, returning its
deleted position or -1 if the element was not found. |
KType |
removeLast()
Retrieves and removes the last element of this deque.
|
int |
removeLast(KType e1)
Removes the last element that equals
e1, returning its
deleted position or -1 if the element was not found. |
void |
removeRange(int fromIndex,
int toIndex)
Removes from this list all of the elements whose index is between
fromIndex, inclusive, and toIndex, exclusive. |
KType |
set(int index,
KType e1)
Replaces the element at the specified position in this list
with the specified element.
|
int |
size()
Return the current number of elements in this container.
|
void |
sort()
In-place sort the whole dequeue by natural ordering (smaller first)
This sort is NOT stable.
|
void |
sort(java.util.Comparator<? super KType> comp)
In-place sort the whole dequeue
using a
Comparator *
This sort is NOT stable. |
void |
sort(int beginIndex,
int endIndex)
In-place sort the dequeue from [beginIndex, endIndex[
by natural ordering (smaller first)
|
void |
sort(int beginIndex,
int endIndex,
java.util.Comparator<? super KType> comp)
In-place sort the dequeue from [beginIndex, endIndex[
using a
Comparator *
This sort is NOT stable. |
KType[] |
toArray(KType[] target)
Copies elements of this deque to an array.
|
isEmpty, removeAll, retainAll, retainAll, toArray, toArray, toStringfinalize, getClass, notify, notifyAll, wait, wait, waitremoveAll, retainAll, retainAllisEmpty, toArray, toArraypublic java.lang.Object[] buffer
Direct deque iteration from head to tail: iterate buffer[i % buffer.length] for i in [this.head; this.head + size()[
public int head
public int tail
protected final ArraySizingStrategy resizer
protected final IteratorPool<ObjectCursor<KType>,ObjectArrayDeque.DescendingValueIterator> descendingValueIteratorPool
protected final IteratorPool<ObjectCursor<KType>,ObjectArrayDeque.ValueIterator> valueIteratorPool
public ObjectArrayDeque()
public ObjectArrayDeque(int initialCapacity)
BoundedProportionalArraySizingStrategypublic ObjectArrayDeque(int initialCapacity,
ArraySizingStrategy resizer)
public ObjectArrayDeque(ObjectContainer<? extends KType> container)
public void addFirst(KType e1)
addFirst in interface ObjectDeque<KType>e1 - the element to addpublic void addFirst(KType... elements)
This method is handy, but costly if used in tight loops (anonymous array passing)
public int addFirst(ObjectContainer<? extends KType> container)
public int addFirst(java.lang.Iterable<? extends ObjectCursor<? extends KType>> iterable)
public void addLast(KType e1)
addLast in interface ObjectDeque<KType>e1 - the element to addpublic void addLast(KType... elements)
This method is handy, but costly if used in tight loops (anonymous array passing)
public int addLast(ObjectContainer<? extends KType> container)
public int addLast(java.lang.Iterable<? extends ObjectCursor<? extends KType>> iterable)
public KType removeFirst()
removeFirst in interface ObjectDeque<KType>public KType removeLast()
removeLast in interface ObjectDeque<KType>public KType getFirst()
getFirst in interface ObjectDeque<KType>public KType getLast()
getLast in interface ObjectDeque<KType>public int removeFirst(KType e1)
e1, returning its
deleted position or -1 if the element was not found.
The returned position is relative to the head,
i.e w.r.t the ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.removeFirst in interface ObjectDeque<KType>removeFirst in interface ObjectIndexedContainer<KType>public int bufferIndexOf(KType e1)
e1. The index points to the buffer array.e1 - The element to look for.buffer of the first element equal to e1
or -1 if not found.public int removeLast(KType e1)
e1, returning its
deleted position or -1 if the element was not found.
The returned position is relative to the head,
i.e w.r.t the ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.removeLast in interface ObjectDeque<KType>removeLast in interface ObjectIndexedContainer<KType>public int lastBufferIndexOf(KType e1)
e1. The index points to the buffer array.e1 - The element to look for.buffer of the first element equal to e1
or -1 if not found.public int indexOf(KType e1)
ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.indexOf in interface ObjectIndexedContainer<KType>public int lastIndexOf(KType e1)
ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.lastIndexOf in interface ObjectIndexedContainer<KType>public int removeAll(KType e1)
e from this collection.removeAll in interface ObjectCollection<KType>e1 - Element to be removed from this collection, if present.public int size()
O(n) time, although implementing classes
should try to maintain the current size and return in constant time.size in interface ObjectContainer<KType>public int capacity()
O(n) time.capacity in interface ObjectContainer<KType>public void clear()
The internal array buffers are not released as a result of this call.
clear in interface ObjectCollection<KType>public void release()
protected void ensureBufferSpace(int expectedAdditions)
expectedAdditions. Increases internal buffer size if needed.public KType[] toArray(KType[] target)
target
array is filled from index 0 (head of the queue) to index size() - 1
(tail of the queue).toArray in interface ObjectContainer<KType>toArray in class AbstractObjectCollection<KType>target - The target array must be large enough to hold all elements.public ObjectArrayDeque<KType> clone()
clone in class java.lang.Objectpublic ObjectArrayDeque.ValueIterator iterator()
Iterator.next() (to avoid boxing of primitive types). To
read the current value, or index in the deque's buffer, use the cursor's public
fields. An example is shown below.
for (IntValueCursor c : intDeque)
{
System.out.println("buffer index="
+ c.index + " value=" + c.value);
}
iterator in interface ObjectContainer<KType>iterator in interface java.lang.Iterable<ObjectCursor<KType>>public ObjectArrayDeque.DescendingValueIterator descendingIterator()
Iterator.next() (to avoid boxing of primitive types). To
read the current value, or index in the deque's buffer, use the cursor's public
fields. An example is shown below.
for (Iteratori = intDeque.descendingIterator(); i.hasNext(); ) { final IntCursor c = i.next(); System.out.println("buffer index=" + c.index + " value=" + c.value); }
descendingIterator in interface ObjectDeque<KType>public <T extends ObjectProcedure<? super KType>> T forEach(T procedure)
procedure to all container elements. Returns the argument (any
subclass of ObjectProcedure. This lets the caller to call methods of the argument
by chaining the call (even if the argument is an anonymous type) to retrieve computed values,
for example (IntContainer):
int count = container.forEach(new IntProcedure() {
int count; // this is a field declaration in an anonymous class.
public void apply(int value) { count++; }}).count;
forEach in interface ObjectContainer<KType>public <T extends ObjectProcedure<? super KType>> T forEach(T procedure, int fromIndex, int toIndex)
procedure to a slice of the container,
fromIndex, inclusive, to toIndex, exclusive.forEach in interface ObjectIndexedContainer<KType>public <T extends ObjectPredicate<? super KType>> T forEach(T predicate)
predicate to container elements, as long as the predicate
returns true. The iteration is interrupted otherwise.forEach in interface ObjectContainer<KType>public <T extends ObjectPredicate<? super KType>> T forEach(T predicate, int fromIndex, int toIndex)
predicate to a slice of the container,
fromIndex, inclusive, to toIndex,
exclusive, or until predicate returns false.forEach in interface ObjectIndexedContainer<KType>public <T extends ObjectProcedure<? super KType>> T descendingForEach(T procedure)
procedure to all elements of this deque, tail to head.descendingForEach in interface ObjectDeque<KType>public <T extends ObjectPredicate<? super KType>> T descendingForEach(T predicate)
predicate to container elements as long, as the predicate
returns true. The iteration is interrupted otherwise.descendingForEach in interface ObjectDeque<KType>public int removeAll(ObjectPredicate<? super KType> predicate)
true.removeAll in interface ObjectCollection<KType>public boolean contains(KType e)
contains in interface ObjectContainer<KType>true if this container has an element
equal to e.public int hashCode()
hashCode in class java.lang.Objectpublic boolean equals(java.lang.Object obj)
equals in class java.lang.Objectpublic static <KType> ObjectArrayDeque<KType> newInstance()
public static <KType> ObjectArrayDeque<KType> newInstance(int initialCapacity)
public static <KType> ObjectArrayDeque<KType> from(KType... elements)
public static <KType> ObjectArrayDeque<KType> from(ObjectContainer<KType> container)
public void sort(int beginIndex,
int endIndex)
beginIndex - the start index to be sortedendIndex - the end index to be sorted (excluded)
This sort is NOT stable.
java.lang.ClassCastException - if the deque contains elements that are not mutually Comparable.public void sort(int beginIndex,
int endIndex,
java.util.Comparator<? super KType> comp)
Comparator * This sort is NOT stable.
beginIndex - the start index to be sortedendIndex - the end index to be sorted (excluded)public void sort()
This sort is NOT stable.
java.lang.ClassCastException - if the deque contains elements that are not mutually Comparable.public void sort(java.util.Comparator<? super KType> comp)
Comparator * This sort is NOT stable.
public void add(KType e1)
add in interface ObjectIndexedContainer<KType>public void insert(int index,
KType e1)
insert in interface ObjectIndexedContainer<KType>index - The index at which the element should be inserted, shifting
any existing and subsequent elements to the right.
Precondition : index must be valid !java.lang.UnsupportedOperationExceptionpublic KType set(int index, KType e1)
ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.set in interface ObjectIndexedContainer<KType>public KType get(int index)
ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.get in interface ObjectIndexedContainer<KType>index from the list.
Precondition : index must be valid !public KType remove(int index)
Careful. Do not confuse this method with the overridden signature in
Java Collections (List.remove(Object)). Use: ObjectCollection.removeAll(KType),
ObjectIndexedContainer.removeFirst(KType) or ObjectIndexedContainer.removeLast(KType) depending
on the actual need.
ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.remove in interface ObjectIndexedContainer<KType>public void removeRange(int fromIndex,
int toIndex)
fromIndex, inclusive, and toIndex, exclusive.
The position is relative to the head,
i.e w.r.t the ObjectIndexedContainer, index 0 is the head of the queue, size() - 1 is the last element position.removeRange in interface ObjectIndexedContainer<KType>Copyright © 2017. All rights reserved.