public abstract class AbstractReferenceBigList<K> extends AbstractReferenceCollection<K> implements ReferenceBigList<K>, Stack<K>
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(long)
and the xAll()
methods
(such as addAll(long, java.util.Collection<? extends K>)
) with a more appropriate iteration scheme. Note the subList(long, long)
method is cognizant of random-access or not, so that need not be reimplemented.
Modifier and Type | Class and Description |
---|---|
static class |
AbstractReferenceBigList.ReferenceRandomAccessSubList<K> |
static class |
AbstractReferenceBigList.ReferenceSubList<K>
A class implementing a sublist view.
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(K k) |
void |
add(long index,
K k)
Inserts the specified element at the specified position in this big list (optional operation).
|
boolean |
addAll(java.util.Collection<? extends K> c) |
boolean |
addAll(long index,
java.util.Collection<? extends K> c)
Adds all of the elements in the specified collection to this list (optional operation).
|
void |
addElements(long index,
K[][] a)
Add (hopefully quickly) elements to this type-specific big list.
|
void |
addElements(long index,
K[][] a,
long offset,
long length)
Add (hopefully quickly) elements to this type-specific big list.
|
void |
clear() |
boolean |
contains(java.lang.Object k)
Returns true if this list contains the specified element.
|
boolean |
equals(java.lang.Object o) |
void |
forEach(java.util.function.Consumer<? super K> action) |
void |
getElements(long from,
java.lang.Object[][] a,
long offset,
long length)
Copies (hopefully quickly) elements of this type-specific big list into the given big array.
|
int |
hashCode()
Returns the hash code for this big list, which is identical to
List.hashCode() . |
long |
indexOf(java.lang.Object k)
Returns the index of the first occurrence of the specified element in this big list, or -1 if this big list does not contain the element.
|
ObjectBigListIterator<K> |
iterator()
Returns a type-specific iterator on the elements of this collection.
|
long |
lastIndexOf(java.lang.Object k)
Returns the index of the last occurrence of the specified element in this big list, or -1 if this big list does not contain the element.
|
ObjectBigListIterator<K> |
listIterator()
Returns a type-specific big-list iterator on this type-specific big list.
|
ObjectBigListIterator<K> |
listIterator(long index)
Returns a type-specific list iterator on this type-specific big 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(long i)
Removes the element at the specified position.
|
void |
removeElements(long from,
long to)
Removes (hopefully quickly) elements of this type-specific big list.
|
K |
set(long index,
K k)
Replaces the element at the specified position in this big list with the specified element (optional operation).
|
void |
setElements(long index,
K[][] a,
long offset,
long length)
Set (hopefully quickly) elements to match the array given.
|
int |
size()
Deprecated.
Please use
Size64.size64() instead. |
void |
size(long size)
Sets the size of this big list.
|
ReferenceBigList<K> |
subList(long from,
long to)
Returns a type-specific view of the portion of this type-specific big list from the index
from , inclusive, to the index to , exclusive. |
K |
top()
Peeks at the top of the stack (optional operation).
|
java.lang.String |
toString() |
containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
addAll, addAll, addAll, addAll, setElements, setElements, spliterator
public void add(long index, K k)
public boolean add(K k)
add
in interface java.util.Collection<K>
add
in class java.util.AbstractCollection<K>
BigList.add(long, Object)
.public K remove(long i)
public K set(long index, K k)
set
in interface BigList<K>
index
- a position in the big list.k
- the element to be stored at the specified position.List.set(int,Object)
UnsupportedOperationException
.public boolean addAll(long index, java.util.Collection<? extends K> c)
addAll
in interface BigList<K>
index
- index at which to insert the first element from the specified collection.c
- collection containing elements to be added to this big list.true
if this big list changed as a result of the callList.addAll(int, Collection)
public boolean addAll(java.util.Collection<? extends K> c)
addAll
in interface java.util.Collection<K>
addAll
in class java.util.AbstractCollection<K>
BigList.addAll(long, Collection)
.public ObjectBigListIterator<K> iterator()
iterator
in interface ObjectIterable<K>
iterator
in interface ReferenceBigList<K>
iterator
in interface ReferenceCollection<K>
iterator
in interface java.lang.Iterable<K>
iterator
in interface java.util.Collection<K>
iterator
in class AbstractReferenceCollection<K>
Iterable.iterator()
listIterator()
.public ObjectBigListIterator<K> listIterator()
listIterator
in interface BigList<K>
listIterator
in interface ReferenceBigList<K>
BigList.listIterator()
listIterator(0)
.public ObjectBigListIterator<K> listIterator(long index)
listIterator
in interface BigList<K>
listIterator
in interface ReferenceBigList<K>
index
- index of first element to be returned from the big-list iterator.BigList.listIterator(long)
public boolean contains(java.lang.Object k)
public long indexOf(java.lang.Object k)
BigList
public long lastIndexOf(java.lang.Object k)
BigList
lastIndexOf
in interface BigList<K>
k
- the object to search for.List.lastIndexOf(Object)
public void size(long size)
BigList
If the specified size is smaller than the current size, the last elements are
discarded. Otherwise, they are filled with 0/null
/false
.
public ReferenceBigList<K> subList(long from, long to)
ReferenceBigList
from
, inclusive, to the index to
, exclusive.subList
in interface BigList<K>
subList
in interface ReferenceBigList<K>
from
- the starting element (inclusive).to
- the ending element (exclusive).BigList.subList(long,long)
public void forEach(java.util.function.Consumer<? super K> action)
forEach
in interface java.lang.Iterable<K>
RandomAccess
, will iterate using a for
loop and the type-specific List.get(int)
method. Otherwise it will fallback
to using the iterator based loop implementation from the superinterface.public void removeElements(long from, long 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 ReferenceBigList<K>
from
- the start index (inclusive).to
- the end index (exclusive).public void addElements(long index, K[][] a, long offset, long 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 ReferenceBigList<K>
index
- the index at which to add elements.a
- the big array containing the elements.offset
- the offset of the first element to add.length
- the number of elements to add.public void addElements(long index, K[][] a)
addElements
in interface ReferenceBigList<K>
index
- the index at which to add elements.a
- the big array containing the elements.public void getElements(long from, java.lang.Object[][] a, long offset, long 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 ReferenceBigList<K>
from
- the start index (inclusive).a
- the destination big array.offset
- the offset into the destination big array where to store the first element copied.length
- the number of elements to be copied.public void setElements(long index, K[][] a, long offset, long length)
ReferenceBigList
ListIterator iter = listIterator(index); long i = 0; while (i < length) { iter.next(); iter.set(BigArrays.get(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 ReferenceBigList<K>
index
- the index at which to start setting elements.a
- the big array containing the elements.offset
- the offset of the first element to add.length
- the number of elements to add.public void clear()
clear
in interface java.util.Collection<K>
clear
in class java.util.AbstractCollection<K>
removeElements(long, long)
.@Deprecated public int size()
Size64.size64()
instead.Integer.MAX_VALUE
.
This default implementation follows the definition above, which is compatible
with Collection.size()
.
size
in interface BigList<K>
size
in interface Size64
size
in interface java.util.Collection<K>
size
in class java.util.AbstractCollection<K>
Integer.MAX_VALUE
.Collection.size()
Size64.size64()
.public int hashCode()
List.hashCode()
.hashCode
in interface java.util.Collection<K>
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object o)
equals
in interface java.util.Collection<K>
equals
in class java.lang.Object
public void push(K o)
Stack
public K top()
Stack
This default implementation returns peek(0)
.
public K peek(int i)
Stack
This default implementation just throws an UnsupportedOperationException
.
public java.lang.String toString()
toString
in class AbstractReferenceCollection<K>