Class Vector<E>
java.lang.Object
com.github.andrewoma.dexx.collection.internal.base.AbstractTraversable<E>
com.github.andrewoma.dexx.collection.internal.base.AbstractIterable<E>
com.github.andrewoma.dexx.collection.internal.base.AbstractList<E>
com.github.andrewoma.dexx.collection.internal.base.AbstractIndexedList<E>
com.github.andrewoma.dexx.collection.Vector<E>
- All Implemented Interfaces:
IndexedList<E>
,Iterable<E>
,List<E>
,Traversable<E>
,Iterable<E>
Vector is a general-purpose, immutable data structure.
It provides random access and updates in effectively constant time, as well as very fast append and prepend.
It is backed by a little endian bit-mapped vector trie with a branching factor of 32. Locality is very good, but not contiguous, which is good for very large sequences.
See Scala's documentation for more information on the implementation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
private static final Vector
private final int
private final int
protected final VectorPointer
<E> private final int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns a list with the specified element appended to the bottom of the list.private int
checkRangeConvert
(int index) private void
cleanLeftEdge
(int cutIndex) private void
cleanRightEdge
(int cutIndex) private Object[]
private Object[]
drop
(int n) Returns a list containing all elements in this list, excluding the firstnumber
of elements.dropBack0
(int cutIndex) dropFront0
(int cutIndex) static <E> @NotNull Vector
<E> empty()
static <E> @NotNull BuilderFactory
<E, Vector<E>> factory()
first()
Returns first element in the list ornull
if the list is empty.get
(int index) Returns the element at the specified index in this list (zero-based).private void
gotoFreshPosWritable
(int oldIndex, int newIndex, int xor) private void
gotoPosWritable
(int oldIndex, int newIndex, int xor) private void
boolean
isEmpty()
Returns true if this collection is empty.iterator()
last()
Returns last element in the list ornull
if the list is empty.private void
preClean
(int depth) Returns a list with the specified element prepended to the top of the list.range
(int from, boolean fromInclusive, int to, boolean toInclusive) Returns a list containing a contiguous range of elements from this list.private int
requiredDepth
(int xor) Returns a list with the element set to the value specified at the index (zero-based).private void
shiftTopLevel
(int oldLeft, int newLeft) int
size()
Returns the size of the collection.slice
(int from, int until) splitAt
(int n) tail()
Returns a list containing all elements in the list, excluding the first element.take
(int n) Returns a list containing the firstnumber
of elements from this list.private void
private void
Methods inherited from class com.github.andrewoma.dexx.collection.internal.base.AbstractList
asList, equals, hashCode, indexOf, lastIndexOf
Methods inherited from class com.github.andrewoma.dexx.collection.internal.base.AbstractIterable
forEach
Methods inherited from class com.github.andrewoma.dexx.collection.internal.base.AbstractTraversable
makeString, makeString, to, toArray, toArray, toIndexedList, toSet, toSortedSet, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
Methods inherited from interface com.github.andrewoma.dexx.collection.List
asList, indexOf, lastIndexOf
Methods inherited from interface com.github.andrewoma.dexx.collection.Traversable
forEach, makeString, makeString, to, toArray, toArray, toIndexedList, toSet, toSortedSet
-
Field Details
-
EMPTY
-
pointer
-
startIndex
private final int startIndex -
endIndex
private final int endIndex -
focus
private final int focus -
dirty
private boolean dirty
-
-
Constructor Details
-
Vector
Vector(int startIndex, int endIndex, int focus)
-
-
Method Details
-
factory
-
empty
-
size
public int size()Description copied from interface:Traversable
Returns the size of the collection.Warning: infinite collections are possible, as are collections that require traversal to calculate the size.
- Specified by:
size
in interfaceTraversable<E>
- Overrides:
size
in classAbstractTraversable<E>
-
initIterator
-
iterator
-
get
Description copied from interface:List
Returns the element at the specified index in this list (zero-based). -
checkRangeConvert
private int checkRangeConvert(int index) -
take
Description copied from interface:List
Returns a list containing the firstnumber
of elements from this list. -
drop
Description copied from interface:List
Returns a list containing all elements in this list, excluding the firstnumber
of elements. -
isEmpty
public boolean isEmpty()Description copied from interface:Traversable
Returns true if this collection is empty.- Specified by:
isEmpty
in interfaceTraversable<E>
- Overrides:
isEmpty
in classAbstractTraversable<E>
-
first
Description copied from interface:List
Returns first element in the list ornull
if the list is empty. -
tail
Description copied from interface:List
Returns a list containing all elements in the list, excluding the first element. An empty list is returned if the list is empty. -
last
Description copied from interface:List
Returns last element in the list ornull
if the list is empty. -
range
@NotNull public @NotNull Vector<E> range(int from, boolean fromInclusive, int to, boolean toInclusive) Description copied from interface:List
Returns a list containing a contiguous range of elements from this list.- Parameters:
from
- starting index for the range (zero-based)fromInclusive
- if true, the element at thefrom
index will be includedto
- end index for the range (zero-based)toInclusive
- if true, the element at theto
index will be included
-
slice
-
splitAt
-
set
Description copied from interface:List
Returns a list with the element set to the value specified at the index (zero-based). -
gotoPosWritable
private void gotoPosWritable(int oldIndex, int newIndex, int xor) -
gotoFreshPosWritable
private void gotoFreshPosWritable(int oldIndex, int newIndex, int xor) -
prepend
Description copied from interface:List
Returns a list with the specified element prepended to the top of the list. -
append
Description copied from interface:List
Returns a list with the specified element appended to the bottom of the list. -
shiftTopLevel
private void shiftTopLevel(int oldLeft, int newLeft) -
zeroLeft
-
zeroRight
-
copyLeft
-
copyRight
-
preClean
private void preClean(int depth) -
cleanLeftEdge
private void cleanLeftEdge(int cutIndex) -
cleanRightEdge
private void cleanRightEdge(int cutIndex) -
requiredDepth
private int requiredDepth(int xor) -
dropFront0
-
dropBack0
-