Package org.ojalgo.array
Class SparseArray<N extends Comparable<N>>
java.lang.Object
org.ojalgo.array.BasicArray<N>
org.ojalgo.array.SparseArray<N>
- All Implemented Interfaces:
Access1D<N>
,Access1D.Aggregatable<N>
,Access1D.Collectable<N,
,Mutate1D> Access1D.Visitable<N>
,Mutate1D
,Mutate1D.Fillable<N>
,Mutate1D.Modifiable<N>
,Structure1D
Only stores nonzero elements and/or elements specifically set by the user. The nonzero elements are stored
internally in a DenseArray
.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
static interface
SparseArray.NonzeroReferenceTypeCallback<N extends Comparable<N>>
static final class
SparseArray.NonzeroView<N extends Comparable<N>>
static final class
SparseArray.SparseFactory<N extends Comparable<N>>
Nested classes/interfaces inherited from class org.ojalgo.array.BasicArray
BasicArray.Factory<N extends Comparable<N>>
Nested classes/interfaces inherited from interface org.ojalgo.structure.Access1D
Access1D.Aggregatable<N extends Comparable<N>>, Access1D.Collectable<N extends Comparable<N>,
R extends Mutate1D>, Access1D.ElementView<N extends Comparable<N>>, Access1D.SelectionView<N extends Comparable<N>>, Access1D.Sliceable<N extends Comparable<N>>, Access1D.Visitable<N extends Comparable<N>> Nested classes/interfaces inherited from interface org.ojalgo.structure.Mutate1D
Mutate1D.Fillable<N extends Comparable<N>>, Mutate1D.Mixable<N extends Comparable<N>>, Mutate1D.Modifiable<N extends Comparable<N>>, Mutate1D.ModifiableReceiver<N extends Comparable<N>>, Mutate1D.Receiver<N extends Comparable<N>>, Mutate1D.Sortable
Nested classes/interfaces inherited from interface org.ojalgo.structure.Structure1D
Structure1D.BasicMapper<T>, Structure1D.IndexMapper<T>, Structure1D.IntIndex, Structure1D.Logical<S extends Structure1D,
B extends Structure1D.Logical<S, B>>, Structure1D.LongIndex, Structure1D.LoopCallback -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final NumberContext
private int
The actual number of nonzwero elementsprivate final long
private final DenseArray.Factory
<N> private final GrowthStrategy
private long[]
private DenseArray
<N> private final N
private final double
-
Constructor Summary
ConstructorsConstructorDescriptionSparseArray
(DenseArray.Factory<N> denseFactory, GrowthStrategy growthStrategy, long count) -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(long index, double addend) void
add
(long index, float addend) void
add
(long index, Comparable<?> addend) void
axpy
(double a, Mutate1D.Modifiable<?> y) Will calculate y = y + a x, will add "a" times "this" to "y"(package private) long
capacity()
long
count()
The total number of elements in this structure.int
long
(package private) DenseArray
<N> densify()
double
Will calculate and return the dot product of this 1D-structure and another input 1D-vector.double
doubleValue
(int index) double
doubleValue
(long index) (package private) double
doubleValueInternally
(int internalIndex) protected void
exchange
(long firstA, long firstB, long step, long count) static <N extends Comparable<N>>
SparseArray.SparseFactory<N> factory
(DenseArray.Factory<N> denseFactory) protected void
protected void
fill
(long first, long limit, long step, NullaryFunction<?> supplier) void
void
fillAll
(NullaryFunction<?> supplier) void
void
fillRange
(long first, long limit, NullaryFunction<?> supplier) (package private) long
long
firstInRange
(long rangeFirst, long rangeLimit) get
(long index) (package private) int
(package private) N
getInternally
(int internalIndex) (package private) DenseArray
<N> getValues
(long fromIncl, long toExcl) (package private) int
index
(long index) long
protected long
indexOfLargest
(long first, long limit, long step) (package private) LongStream
indices()
(package private) long
long
limitOfRange
(long rangeFirst, long rangeLimit) protected void
modify
(long first, long limit, long step, BinaryFunction<N> function, Access1D<N> right) protected void
modify
(long first, long limit, long step, UnaryFunction<N> function) protected void
modify
(long first, long limit, long step, Access1D<N> left, BinaryFunction<N> function) void
modifyAll
(UnaryFunction<N> modifier) void
modifyOne
(long index, UnaryFunction<N> modifier) nonzeros()
Similar toAccess1D.elements()
but avoids elements that are structurally known to be zero.(package private) void
put
(long key, int index, double value) (package private) void
(package private) void
remove
(long externalIndex, int internalIndex) void
reset()
Reset this mutable structure to some standard (all zeros) initial state.void
set
(int index, double value) void
set
(long index, double value) void
set
(long index, float value) void
set
(long index, Comparable<?> value) int
size()
The total number of elements in this structure.void
supplyNonZerosTo
(Mutate1D consumer) private void
update
(long externalIndex, int internalIndex, double value, boolean shouldStoreZero) Will never remove anything - just insert or updateprivate void
update
(long externalIndex, int internalIndex, Comparable<?> value, boolean shouldStoreZero) Will never remove anything - just insert or updateprotected void
visit
(long first, long limit, long step, VoidFunction<N> visitor) void
visitOne
(long index, VoidFunction<N> visitor) void
visitPrimitiveNonzerosInRange
(long first, long limit, SparseArray.NonzeroPrimitiveCallback visitor) void
visitRange
(long first, long limit, VoidFunction<N> visitor) void
visitReferenceTypeNonzerosInRange
(long first, long limit, SparseArray.NonzeroReferenceTypeCallback<N> visitor) Methods inherited from class org.ojalgo.array.BasicArray
aggregateRange, equals, factory, getMathType, hashCode, isPrimitive, modifyMatching, modifyMatching, modifyRange, supplyTo, toString, visitAll, wrapInArray1D, wrapInArray2D, wrapInArrayAnyD
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.ojalgo.structure.Access1D
asCollectable1D, asKeyed1D, byteValue, byteValue, elements, floatValue, floatValue, intValue, intValue, longValue, longValue, select, shortValue, shortValue, supplyTo, toRawCopy1D
Methods inherited from interface org.ojalgo.structure.Access1D.Aggregatable
aggregateAll
Methods inherited from interface org.ojalgo.structure.Access1D.Collectable
collect
Methods inherited from interface org.ojalgo.structure.Mutate1D
set, set, set, set, set, set, set, set, set
Methods inherited from interface org.ojalgo.structure.Mutate1D.Fillable
fillCompatible, fillMatching, fillMatching, fillMatching
Methods inherited from interface org.ojalgo.structure.Mutate1D.Modifiable
add, add, add, add
-
Field Details
-
MATH_CONTEXT
-
myActualLength
private int myActualLengthThe actual number of nonzwero elements -
myCount
private final long myCount -
myDenseFactory
-
myGrowthStrategy
-
myIndices
private long[] myIndices -
myValues
-
myZeroNumber
-
myZeroScalar
-
myZeroValue
private final double myZeroValue
-
-
Constructor Details
-
SparseArray
SparseArray(DenseArray.Factory<N> denseFactory, GrowthStrategy growthStrategy, long count)
-
-
Method Details
-
factory
public static <N extends Comparable<N>> SparseArray.SparseFactory<N> factory(DenseArray.Factory<N> denseFactory) -
add
-
add
public void add(long index, double addend) -
add
public void add(long index, float addend) -
axpy
Description copied from interface:Access1D
Will calculate y = y + a x, will add "a" times "this" to "y"- Parameters:
a
- The scaley
- The "vector" to update
-
count
public long count()Description copied from interface:Structure1D
The total number of elements in this structure.You only need to implement this method if the structure can contain more than Integer.MAX_VALUE elements.
-
countNonzeros
public int countNonzeros() -
countZeros
public long countZeros() -
dot
Description copied from interface:Access1D
Will calculate and return the dot product of this 1D-structure and another input 1D-vector.- Parameters:
vector
- Another 1D-structure- Returns:
- The dot product
-
doubleValue
public double doubleValue(int index) -
doubleValue
public double doubleValue(long index) -
fillAll
-
fillAll
-
fillRange
-
fillRange
-
firstInRange
public long firstInRange(long rangeFirst, long rangeLimit) -
get
-
indexOfLargest
public long indexOfLargest()- Specified by:
indexOfLargest
in interfaceAccess1D.Aggregatable<N extends Comparable<N>>
- Overrides:
indexOfLargest
in classBasicArray<N extends Comparable<N>>
-
limitOfRange
public long limitOfRange(long rangeFirst, long rangeLimit) -
modifyAll
- Specified by:
modifyAll
in interfaceMutate1D.Modifiable<N extends Comparable<N>>
- Overrides:
modifyAll
in classBasicArray<N extends Comparable<N>>
-
modifyOne
-
nonzeros
Description copied from interface:Access1D
Similar toAccess1D.elements()
but avoids elements that are structurally known to be zero. (That does not eliminate all zero-values from this view.) With an arbitrary (dense) unstructured implementation theAccess1D.nonzeros()
andAccess1D.elements()
methods do the same thing! Only some specific implementations are able to actually exploit structure/sparsity to view fewer elements. -
reset
public void reset()Description copied from interface:Mutate1D
Reset this mutable structure to some standard (all zeros) initial state. It must still be usuable after this call, and the structure/size/shape must not change. -
set
public void set(int index, double value) -
set
-
set
public void set(long index, double value) -
set
public void set(long index, float value) -
size
public int size()Description copied from interface:Structure1D
The total number of elements in this structure. -
supplyNonZerosTo
-
visitOne
-
visitPrimitiveNonzerosInRange
public void visitPrimitiveNonzerosInRange(long first, long limit, SparseArray.NonzeroPrimitiveCallback visitor) -
visitRange
- Specified by:
visitRange
in interfaceAccess1D.Visitable<N extends Comparable<N>>
- Overrides:
visitRange
in classBasicArray<N extends Comparable<N>>
-
visitReferenceTypeNonzerosInRange
public void visitReferenceTypeNonzerosInRange(long first, long limit, SparseArray.NonzeroReferenceTypeCallback<N> visitor) -
update
private void update(long externalIndex, int internalIndex, Comparable<?> value, boolean shouldStoreZero) Will never remove anything - just insert or update -
update
private void update(long externalIndex, int internalIndex, double value, boolean shouldStoreZero) Will never remove anything - just insert or update -
exchange
protected void exchange(long firstA, long firstB, long step, long count) - Overrides:
exchange
in classBasicArray<N extends Comparable<N>>
-
fill
- Overrides:
fill
in classBasicArray<N extends Comparable<N>>
-
fill
- Overrides:
fill
in classBasicArray<N extends Comparable<N>>
-
indexOfLargest
protected long indexOfLargest(long first, long limit, long step) - Overrides:
indexOfLargest
in classBasicArray<N extends Comparable<N>>
-
modify
protected void modify(long first, long limit, long step, Access1D<N> left, BinaryFunction<N> function) - Overrides:
modify
in classBasicArray<N extends Comparable<N>>
-
modify
protected void modify(long first, long limit, long step, BinaryFunction<N> function, Access1D<N> right) - Overrides:
modify
in classBasicArray<N extends Comparable<N>>
-
modify
- Overrides:
modify
in classBasicArray<N extends Comparable<N>>
-
visit
- Overrides:
visit
in classBasicArray<N extends Comparable<N>>
-
capacity
long capacity() -
densify
DenseArray<N> densify() -
doubleValueInternally
double doubleValueInternally(int internalIndex) -
firstIndex
long firstIndex() -
getActualLength
int getActualLength() -
getInternally
-
getValues
DenseArray<N> getValues() -
getValues
-
index
int index(long index) -
indices
LongStream indices() -
lastIndex
long lastIndex() -
put
void put(long key, int index, double value) -
put
-
remove
void remove(long externalIndex, int internalIndex)
-