public class SequentialAccessSparseVector extends AbstractVector
Implements vector that only stores non-zero doubles as a pair of parallel arrays (OrderedIntDoubleMapping),
one int[], one double[]. If there are k non-zero elements in the vector, this implementation has
O(log(k)) random-access read performance, and O(k) random-access write performance, which is far below that
of the hashmap based RandomAccessSparseVector. This
class is primarily used for operations where the all the elements will be accessed in a read-only fashion
sequentially: methods which operate not via get() or set(), but via iterateNonZero(), such as (but not limited
to) :
OrderedIntDoubleMappingAbstractVector.LocalElementVector.ElementlengthSquared| Constructor and Description |
|---|
SequentialAccessSparseVector()
For serialization purposes only.
|
SequentialAccessSparseVector(int cardinality) |
SequentialAccessSparseVector(int cardinality,
int size) |
SequentialAccessSparseVector(SequentialAccessSparseVector other) |
SequentialAccessSparseVector(SequentialAccessSparseVector other,
boolean shallowCopy) |
SequentialAccessSparseVector(Vector other) |
| Modifier and Type | Method and Description |
|---|---|
SequentialAccessSparseVector |
clone()
Return a copy of the recipient
|
double |
getIteratorAdvanceCost()
Gets an estimate of the cost (in number of operations) it takes to advance an iterator through the nonzero
elements of this vector.
|
double |
getLookupCost()
Gets an estimate of the cost (in number of operations) it takes to lookup a random element in this vector.
|
int |
getNumNondefaultElements()
Return the number of values in the recipient which are not the default value.
|
int |
getNumNonZeroElements()
Return the number of non zero elements in the vector.
|
double |
getQuick(int index)
Warning! This takes O(log n) time as it does a binary search behind the scenes!
Only use it when STRICTLY necessary.
|
void |
incrementQuick(int index,
double increment)
Increment the value at the given index by the given value.
|
boolean |
isAddConstantTime()
Return true iff adding a new (nonzero) element takes constant time for this vector.
|
boolean |
isDense() |
boolean |
isSequentialAccess() |
Iterator<Vector.Element> |
iterateNonZero()
Iterates over all non-zero elements.
|
Iterator<Vector.Element> |
iterator()
Iterates over all elements * NOTE: Implementations may choose to reuse the Element returned for performance
reasons, so if you need a copy of it, you should call
AbstractVector.getElement(int) for the given index |
SequentialAccessSparseVector |
like()
Return an empty vector of the same underlying class as the receiver
|
Vector |
like(int cardinality)
Return a new empty vector of the same underlying class as the receiver with given cardinality
|
protected Matrix |
matrixLike(int rows,
int columns)
Subclasses must override to return an appropriately sparse or dense result
|
void |
mergeUpdates(OrderedIntDoubleMapping updates)
Merge a set of (index, value) pairs into the vector.
|
void |
setQuick(int index,
double value)
Warning! This takes O(log n) time as it does a binary search behind the scenes!
Only use it when STRICTLY necessary.
|
String |
toString() |
aggregate, aggregate, all, asFormatString, assign, assign, assign, assign, assign, assign, createOptimizedCopy, cross, divide, dot, dotSelf, equals, get, getDistanceSquared, getElement, getLengthSquared, hashCode, invalidateCachedLength, logNormalize, logNormalize, logNormalize, maxValue, maxValueIndex, minus, minValue, minValueIndex, nonZeroes, norm, normalize, normalize, plus, plus, set, size, sparseVectorToString, times, times, toString, viewPart, zSumpublic SequentialAccessSparseVector()
public SequentialAccessSparseVector(int cardinality)
public SequentialAccessSparseVector(int cardinality,
int size)
public SequentialAccessSparseVector(Vector other)
public SequentialAccessSparseVector(SequentialAccessSparseVector other, boolean shallowCopy)
public SequentialAccessSparseVector(SequentialAccessSparseVector other)
protected Matrix matrixLike(int rows, int columns)
AbstractVectormatrixLike in class AbstractVectorrows - the row cardinalitycolumns - the column cardinalitypublic SequentialAccessSparseVector clone()
Vectorclone in interface Vectorclone in class AbstractVectorpublic void mergeUpdates(OrderedIntDoubleMapping updates)
Vectorupdates - an ordered mapping of indices to values to be merged in.public String toString()
toString in class AbstractVectorpublic boolean isDense()
public boolean isSequentialAccess()
public double getQuick(int index)
index - an int index.public void setQuick(int index,
double value)
index - an int index.value - a double value to setpublic void incrementQuick(int index,
double increment)
VectorincrementQuick in interface VectorincrementQuick in class AbstractVectorindex - an int index into the receiverincrement - sets the value at the given index to value + increment;public SequentialAccessSparseVector like()
Vectorpublic Vector like(int cardinality)
Vectorpublic int getNumNondefaultElements()
Vectorpublic int getNumNonZeroElements()
VectorgetNumNonZeroElements in interface VectorgetNumNonZeroElements in class AbstractVectorpublic double getLookupCost()
Vectorpublic double getIteratorAdvanceCost()
Vectorpublic boolean isAddConstantTime()
Vectorpublic Iterator<Vector.Element> iterateNonZero()
AbstractVectorAbstractVector.getElement(int) for the given indexiterateNonZero in class AbstractVectorIterator over all non-zero elementspublic Iterator<Vector.Element> iterator()
AbstractVectorAbstractVector.getElement(int) for the given indexiterator in class AbstractVectorIterator over all elementsCopyright © 2008–2016 The Apache Software Foundation. All rights reserved.