Class DoubleVectorDataSparse
java.lang.Object
org.djunits.value.storage.Storage<DoubleVectorData>
org.djunits.value.vdouble.vector.data.DoubleVectorData
org.djunits.value.vdouble.vector.data.DoubleVectorDataSparse
- All Implemented Interfaces:
Serializable
,Cloneable
Stores sparse data for a DoubleVector and carries out basic operations.
Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See DJUNITS License.
- Author:
- Alexander Verbraeck, Peter Knoppers
- See Also:
-
Field Summary
Fields inherited from class org.djunits.value.vdouble.vector.data.DoubleVectorData
PARALLEL_THRESHOLD, vectorSI
-
Constructor Summary
ConstructorDescriptionDoubleVectorDataSparse
(double[] vectorSI, int[] indices, int size) Create a vector with sparse data. -
Method Summary
Modifier and TypeMethodDescriptionassign
(DoubleFunction doubleFunction) Apply an operation to each cell.final DoubleVectorDataSparse
assign
(DoubleFunction2 doubleFunction, DoubleVectorData right) Apply a binary operation on a cell by cell basis.final int
Compute and return the number of non-zero cells in this indexed value.final DoubleVectorDataSparse
copy()
Create and return a deep copy of the data.final DoubleVectorData
divide
(DoubleVectorData right) Divide two vectors on a cell-by-cell basis.boolean
final double[]
Create and return a dense copy of the data.final double
getSI
(int index) Retrieve the SI value of one element of this data.int
hashCode()
static DoubleVectorDataSparse
instantiate
(double[] valuesSI) Instantiate a DoubleVectorDataSparse from an array.final DoubleVectorData
minus
(DoubleVectorData right) Subtract two vectors on a cell-by-cell basis.final DoubleVectorData
plus
(DoubleVectorData right) Add two vectors on a cell-by-cell basis.final void
setSI
(int index, double valueSI) Sets a value at the index in the vector.final int
size()
Retrieve the size of the vector.final DoubleVectorData
times
(DoubleVectorData right) Multiply two vectors on a cell-by-cell basis.final DoubleVectorDataDense
toDense()
Return the densely stored equivalent of this data.final DoubleVectorDataSparse
toSparse()
Return the sparsely stored equivalent of this data.Methods inherited from class org.djunits.value.vdouble.vector.data.DoubleVectorData
checkSizes, compareDenseVectorWithSparseVector, decrementBy, divideBy, incrementBy, instantiate, instantiate, instantiate, instantiate, multiplyBy, toString, zSum
Methods inherited from class org.djunits.value.storage.Storage
getStorageType, isDense, isSparse
-
Constructor Details
-
DoubleVectorDataSparse
public DoubleVectorDataSparse(double[] vectorSI, int[] indices, int size) Create a vector with sparse data.- Parameters:
vectorSI
- double[]; the data to storeindices
- int[]; the index values of the Vectorsize
- int; the length of the vector (padded with 0 after highest index in indices)
-
-
Method Details
-
cardinality
public final int cardinality()Description copied from class:Storage
Compute and return the number of non-zero cells in this indexed value.- Specified by:
cardinality
in classStorage<DoubleVectorData>
- Returns:
- int; the number of non-zero cells
-
assign
Description copied from class:DoubleVectorData
Apply an operation to each cell.- Specified by:
assign
in classDoubleVectorData
- Parameters:
doubleFunction
- DoubleFunction; the operation to apply- Returns:
- DoubleVectorData; this (modified) double vector data object
-
assign
Description copied from class:DoubleVectorData
Apply a binary operation on a cell by cell basis.- Specified by:
assign
in classDoubleVectorData
- Parameters:
doubleFunction
- DoubleFunction2; the binary operation to applyright
- DoubleVectorData; the right operand for the binary operation- Returns:
- DoubleVectorData; this (modified) double vector data object
-
toDense
Description copied from class:DoubleVectorData
Return the densely stored equivalent of this data.- Specified by:
toDense
in classDoubleVectorData
- Returns:
- DoubleVectorDataDense; the dense transformation of this data
-
toSparse
Description copied from class:DoubleVectorData
Return the sparsely stored equivalent of this data.- Specified by:
toSparse
in classDoubleVectorData
- Returns:
- DoubleVectorDataSparse; the sparse transformation of this data
-
size
public final int size()Description copied from class:DoubleVectorData
Retrieve the size of the vector.- Specified by:
size
in classDoubleVectorData
- Returns:
- int; the size of the vector
-
getSI
public final double getSI(int index) Description copied from class:DoubleVectorData
Retrieve the SI value of one element of this data.- Specified by:
getSI
in classDoubleVectorData
- Parameters:
index
- int; the index to get the value for- Returns:
- double; the value at the index
-
setSI
public final void setSI(int index, double valueSI) Description copied from class:DoubleVectorData
Sets a value at the index in the vector.- Specified by:
setSI
in classDoubleVectorData
- Parameters:
index
- int; the index to set the value forvalueSI
- double; the value at the index
-
getDenseVectorSI
public final double[] getDenseVectorSI()Description copied from class:DoubleVectorData
Create and return a dense copy of the data.- Specified by:
getDenseVectorSI
in classDoubleVectorData
- Returns:
- double[]; a safe copy of VectorSI
-
copy
Description copied from class:Storage
Create and return a deep copy of the data.- Specified by:
copy
in classStorage<DoubleVectorData>
- Returns:
- T; a deep copy of the data
-
instantiate
Instantiate a DoubleVectorDataSparse from an array.- Parameters:
valuesSI
- double[]; the (SI) values to store- Returns:
- the DoubleVectorDataSparse
-
plus
Description copied from class:DoubleVectorData
Add two vectors on a cell-by-cell basis. If both vectors are sparse, a sparse vector is returned, otherwise a dense vector is returned. Neither of the two objects is changed.- Specified by:
plus
in classDoubleVectorData
- Parameters:
right
- DoubleVectorData; the other data object to add- Returns:
- DoubleVectorData; the sum of this data object and the other data object as a new data object
-
minus
Description copied from class:DoubleVectorData
Subtract two vectors on a cell-by-cell basis. If both vectors are sparse, a sparse vector is returned, otherwise a dense vector is returned. Neither of the two objects is changed.- Specified by:
minus
in classDoubleVectorData
- Parameters:
right
- DoubleVectorData; the other data object to subtract- Returns:
- DoubleVectorData; the difference of this data object and the other data object as a new data object
-
times
Description copied from class:DoubleVectorData
Multiply two vectors on a cell-by-cell basis. If both vectors are dense, a dense vector is returned, otherwise a sparse vector is returned.- Specified by:
times
in classDoubleVectorData
- Parameters:
right
- DoubleVectorData; the other data object to multiply with- Returns:
- DoubleVectorData; a new double vector data store holding the result of the multiplications
-
divide
Description copied from class:DoubleVectorData
Divide two vectors on a cell-by-cell basis. If this vector is sparse andright
is dense, a sparse vector is returned, otherwise a dense vector is returned.- Specified by:
divide
in classDoubleVectorData
- Parameters:
right
- DoubleVectorData; the other data object to divide by- Returns:
- DoubleVectorData; the ratios of the values of this data object and the other data object
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
hashCode
public int hashCode()- Overrides:
hashCode
in classDoubleVectorData
-
equals
- Overrides:
equals
in classDoubleVectorData
-