public abstract class AbstractObjectList<K> extends AbstractObjectCollection<K> implements ObjectList<K>, it.unimi.dsi.fastutil.Stack<K>
As an additional bonus, this class implements on top of the list operations a type-specific stack.
Most of the methods in this class are optimized with the assumption that the List will have
have constant-time random access. If this is not the case, you
should probably at least override listIterator(int) and the xAll() methods
(such as addAll(int, java.util.Collection<? extends K>)) with a more appropriate iteration scheme. Note the subList(int, int)
method is cognizant of random-access or not, so that need not be reimplemented.
| Modifier and Type | Class and Description |
|---|---|
static class |
AbstractObjectList.ObjectRandomAccessSubList<K> |
static class |
AbstractObjectList.ObjectSubList<K>
A class implementing a sublist view.
|
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractObjectList() |
| Modifier and Type | Method and Description |
|---|---|
void |
add(int index,
K k) |
boolean |
add(K k) |
boolean |
addAll(java.util.Collection<? extends K> c) |
boolean |
addAll(int index,
java.util.Collection<? extends K> c)
Adds all of the elements in the specified collection to this list (optional operation).
|
void |
addElements(int index,
K[] a)
Add (hopefully quickly) elements to this type-specific list.
|
void |
addElements(int index,
K[] a,
int offset,
int length)
Add (hopefully quickly) elements to this type-specific list.
|
void |
clear() |
int |
compareTo(java.util.List<? extends K> l)
Compares this list to another object.
|
boolean |
contains(java.lang.Object k)
Returns true if this list contains the specified element.
|
protected void |
ensureIndex(int index)
Ensures that the given index is nonnegative and not greater than the list size.
|
protected void |
ensureRestrictedIndex(int index)
Ensures that the given index is nonnegative and smaller than the list size.
|
boolean |
equals(java.lang.Object o) |
void |
forEach(java.util.function.Consumer<? super K> action) |
void |
getElements(int from,
java.lang.Object[] a,
int offset,
int length)
Copies (hopefully quickly) elements of this type-specific list into the given array.
|
int |
hashCode()
Returns the hash code for this list, which is identical to
List.hashCode(). |
int |
indexOf(java.lang.Object k) |
ObjectListIterator<K> |
iterator()
Returns a type-specific iterator on the elements of this collection.
|
int |
lastIndexOf(java.lang.Object k) |
ObjectListIterator<K> |
listIterator()
Returns a type-specific list iterator on the list.
|
ObjectListIterator<K> |
listIterator(int index)
Returns a type-specific list iterator on the list starting at a given index.
|
K |
peek(int i) |
K |
pop() |
void |
push(K o) |
K |
remove(int i) |
void |
removeElements(int from,
int to)
Removes (hopefully quickly) elements of this type-specific list.
|
K |
set(int index,
K k) |
void |
setElements(int index,
K[] a,
int offset,
int length)
Set (hopefully quickly) elements to match the array given.
|
void |
size(int size)
Sets the size of this list.
|
ObjectList<K> |
subList(int from,
int to)
Returns a type-specific view of the portion of this list from the index
from, inclusive, to the index to, exclusive. |
java.lang.Object[] |
toArray() |
<T> T[] |
toArray(T[] a) |
K |
top() |
java.lang.String |
toString() |
containsAll, isEmpty, remove, removeAll, retainAll, sizeclone, finalize, getClass, notify, notifyAll, wait, wait, waitaddAll, addAll, of, of, of, of, of, setElements, setElements, sort, spliterator, unstableSortprotected void ensureIndex(int index)
index - an index.java.lang.IndexOutOfBoundsException - if the given index is negative or greater than the list size.protected void ensureRestrictedIndex(int index)
index - an index.java.lang.IndexOutOfBoundsException - if the given index is negative or not smaller than the list size.public boolean add(K k)
public boolean addAll(int index,
java.util.Collection<? extends K> c)
addAll in interface java.util.List<K>public boolean addAll(java.util.Collection<? extends K> c)
public ObjectListIterator<K> iterator()
iterator in interface ObjectCollection<K>iterator in interface ObjectIterable<K>iterator in interface ObjectList<K>iterator in interface java.lang.Iterable<K>iterator in interface java.util.Collection<K>iterator in interface java.util.List<K>iterator in class AbstractObjectCollection<K>Iterable.iterator()public ObjectListIterator<K> listIterator()
listIterator in interface ObjectList<K>listIterator in interface java.util.List<K>List.listIterator()public ObjectListIterator<K> listIterator(int index)
listIterator in interface ObjectList<K>listIterator in interface java.util.List<K>List.listIterator(int)public boolean contains(java.lang.Object k)
public int indexOf(java.lang.Object k)
indexOf in interface java.util.List<K>public int lastIndexOf(java.lang.Object k)
lastIndexOf in interface java.util.List<K>public void size(int size)
ObjectListIf the specified size is smaller than the current size, the last elements are
discarded. Otherwise, they are filled with 0/null/false.
size in interface ObjectList<K>size - the new size.public ObjectList<K> subList(int from, int to)
ObjectListfrom, inclusive, to the index to, exclusive.subList in interface ObjectList<K>subList in interface java.util.List<K>List.subList(int,int)public void forEach(java.util.function.Consumer<? super K> action)
forEach in interface java.lang.Iterable<K>public void removeElements(int from,
int to)
This is a trivial iterator-based based implementation. It is expected that implementations will override this method with a more optimized version.
removeElements in interface ObjectList<K>from - the start index (inclusive).to - the end index (exclusive).public void addElements(int index,
K[] a,
int offset,
int length)
This is a trivial iterator-based implementation. It is expected that implementations will override this method with a more optimized version.
addElements in interface ObjectList<K>index - the index at which to add elements.a - the array containing the elements.offset - the offset of the first element to add.length - the number of elements to add.public void addElements(int index,
K[] a)
addElements in interface ObjectList<K>index - the index at which to add elements.a - the array containing the elements.public void getElements(int from,
java.lang.Object[] a,
int offset,
int length)
This is a trivial iterator-based implementation. It is expected that implementations will override this method with a more optimized version.
getElements in interface ObjectList<K>from - the start index (inclusive).a - the destination array.offset - the offset into the destination array where to store the first element copied.length - the number of elements to be copied.public void setElements(int index,
K[] a,
int offset,
int length)
ObjectList
ListIterator iter = listIterator(index);
int i = 0;
while (i < length) {
iter.next();
iter.set(a[offset + i++]);
}
However, the exact implementation may be more efficient, taking into account
whether random access is faster or not, or at the discretion of subclasses,
abuse internals.setElements in interface ObjectList<K>index - the index at which to start setting elements.a - the array containing the elementsoffset - the offset of the first element to add.length - the number of elements to add.public void clear()
public java.lang.Object[] toArray()
public <T> T[] toArray(T[] a)
public int hashCode()
List.hashCode().public boolean equals(java.lang.Object o)
public int compareTo(java.util.List<? extends K> l)
List, this method performs a lexicographical comparison; otherwise,
it throws a ClassCastException.compareTo in interface java.lang.Comparable<java.util.List<? extends K>>l - a list.List, a negative integer,
zero, or a positive integer as this list is lexicographically less than, equal
to, or greater than the argument.java.lang.ClassCastException - if the argument is not a list.public java.lang.String toString()
toString in class AbstractObjectCollection<K>