public abstract class AbstractReferenceList<K> extends AbstractReferenceCollection<K> implements ReferenceList<K>, Stack<K>
As an additional bonus, this class implements on top of the list operations a type-specific stack.
| Modifier and Type | Class and Description |
|---|---|
static class |
AbstractReferenceList.ReferenceSubList<K>
A class implementing a sublist view.
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(int index,
K k)
Inserts the specified element at the specified position in this list
(optional operation).
|
boolean |
add(K k)
Ensures that this collection contains the specified element (optional
operation).
|
boolean |
addAll(Collection<? extends K> c)
Adds all of the elements in the specified collection to this collection
(optional operation).
|
boolean |
addAll(int index,
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()
Removes all of the elements from this collection (optional operation).
|
boolean |
contains(Object k)
Returns true if this list contains the specified element.
|
boolean |
equals(Object o)
Indicates whether some other object is "equal to" this one.
|
void |
getElements(int from,
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(Object k)
Returns the index of the first occurrence of the specified element
in this list, or -1 if this list does not contain the element.
|
ObjectListIterator<K> |
iterator()
Returns an iterator over the elements contained in this collection.
|
int |
lastIndexOf(Object k)
Returns the index of the last occurrence of the specified element
in this list, or -1 if this list does not contain the element.
|
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)
Peeks at an element on the stack (optional operation).
|
K |
pop()
Pops the top off the stack.
|
void |
push(K o)
Pushes the given object on the stack.
|
K |
remove(int i)
Removes the element at the specified position in this list (optional
operation).
|
void |
removeElements(int from,
int to)
Removes (hopefully quickly) elements of this type-specific list.
|
K |
set(int index,
K k)
Replaces the element at the specified position in this list with the
specified element (optional operation).
|
void |
size(int size)
Sets the size of this list.
|
ReferenceList<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. |
K |
top()
Peeks at the top of the stack (optional operation).
|
String |
toString()
Returns a string representation of this collection.
|
containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArraycontainsAll, get, isEmpty, remove, removeAll, replaceAll, retainAll, size, sort, spliterator, toArray, toArrayparallelStream, removeIf, streampublic void add(int index,
K k)
This implementation always throws an
UnsupportedOperationException.
public boolean add(K k)
Collections that support this operation may place limitations on what elements may be added to this collection. In particular, some collections will refuse to add null elements, and others will impose restrictions on the type of elements that may be added. Collection classes should clearly specify in their documentation any restrictions on what elements may be added.
If a collection refuses to add a particular element for any reason other than that it already contains the element, it must throw an exception (rather than returning false). This preserves the invariant that a collection always contains the specified element after this call returns.
This implementation always throws an UnsupportedOperationException.
This implementation delegates to the type-specific version of
List.add(int, Object).
add in interface Collection<K>add in interface List<K>add in class AbstractCollection<K>k - element whose presence in this collection is to be ensuredpublic K remove(int i)
This implementation always throws an
UnsupportedOperationException.
public K set(int index, K k)
This implementation always throws an
UnsupportedOperationException.
public boolean addAll(int index,
Collection<? extends K> c)
public boolean addAll(Collection<? extends K> c)
This implementation iterates over the specified collection, and adds each object returned by the iterator to this collection, in turn.
Note that this implementation will throw an UnsupportedOperationException unless add is overridden (assuming the specified collection is non-empty).
This implementation delegates to the type-specific version of
List.addAll(int, Collection).
addAll in interface Collection<K>addAll in interface List<K>addAll in class AbstractCollection<K>c - collection containing elements to be added to this collectionAbstractCollection.add(Object)public ObjectListIterator<K> iterator()
This implementation delegates to listIterator().
iterator in interface ObjectIterable<K>iterator in interface ReferenceCollection<K>iterator in interface ReferenceList<K>iterator in interface Iterable<K>iterator in interface Collection<K>iterator in interface List<K>iterator in class AbstractReferenceCollection<K>Iterable.iterator()public ObjectListIterator<K> listIterator()
This implementation delegates to listIterator(0).
listIterator in interface ReferenceList<K>listIterator in interface List<K>List.listIterator()public ObjectListIterator<K> listIterator(int index)
This implementation is based on the random-access methods.
listIterator in interface ReferenceList<K>listIterator in interface List<K>index - index of the first element to be returned from the
list iterator (by a call to next)List.listIterator(int)public boolean contains(Object k)
This implementation delegates to indexOf().
contains in interface Collection<K>contains in interface List<K>contains in class AbstractCollection<K>k - element whose presence in this collection is to be testedList.contains(Object)public int indexOf(Object k)
java.util.Listpublic int lastIndexOf(Object k)
java.util.ListlastIndexOf in interface List<K>k - element to search forpublic void size(int size)
ReferenceList
If 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 ReferenceList<K>size - the new size.public ReferenceList<K> subList(int from, int to)
ReferenceListfrom, inclusive, to the index to, exclusive.
Note that this specification strengthens the one given in
List.subList(int,int).
subList in interface ReferenceList<K>subList in interface List<K>from - low endpoint (inclusive) of the subListto - high endpoint (exclusive) of the subListList.subList(int,int)public void removeElements(int from,
int to)
This is a trivial iterator-based implementation. It is expected that implementations will override this method with a more optimized version.
removeElements in interface ReferenceList<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 ReferenceList<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)
This implementation delegates to the analogous method for array fragments.
addElements in interface ReferenceList<K>index - the index at which to add elements.a - the array containing the elements.public void getElements(int from,
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 ReferenceList<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 clear()
This implementation iterates over this collection, removing each element using the Iterator.remove operation. Most implementations will probably choose to override this method for efficiency.
Note that this implementation will throw an UnsupportedOperationException if the iterator returned by this collection's iterator method does not implement the remove method and this collection is non-empty.
This implementation delegates to removeElements(int, int).
clear in interface Collection<K>clear in interface List<K>clear in class AbstractCollection<K>public int hashCode()
List.hashCode().hashCode in interface Collection<K>hashCode in interface List<K>hashCode in class ObjectObject.equals(java.lang.Object),
System.identityHashCode(java.lang.Object)public boolean equals(Object o)
java.lang.Object
The equals method implements an equivalence relation
on non-null object references:
x, x.equals(x) should return
true.
x and y, x.equals(y)
should return true if and only if
y.equals(x) returns true.
x, y, and z, if
x.equals(y) returns true and
y.equals(z) returns true, then
x.equals(z) should return true.
x and y, multiple invocations of
x.equals(y) consistently return true
or consistently return false, provided no
information used in equals comparisons on the
objects is modified.
x,
x.equals(null) should return false.
The equals method for class Object implements
the most discriminating possible equivalence relation on objects;
that is, for any non-null reference values x and
y, this method returns true if and only
if x and y refer to the same object
(x == y has the value true).
Note that it is generally necessary to override the hashCode
method whenever this method is overridden, so as to maintain the
general contract for the hashCode method, which states
that equal objects must have equal hash codes.
equals in interface Collection<K>equals in interface List<K>equals in class Objecto - the reference object with which to compare.true if this object is the same as the obj
argument; false otherwise.Object.hashCode(),
HashMappublic void push(K o)
Stackpublic K top()
StackThis default implementation returns peek(0).
public K peek(int i)
StackThis default implementation just throws an UnsupportedOperationException.
public String toString()
java.util.AbstractCollectionString.valueOf(Object).toString in class AbstractReferenceCollection<K>