Class FloatVectorDataSparse
- java.lang.Object
-
- org.djunits.value.storage.AbstractStorage<FloatVectorData>
-
- org.djunits.value.vfloat.vector.data.FloatVectorData
-
- org.djunits.value.vfloat.vector.data.FloatVectorDataSparse
-
- All Implemented Interfaces:
Serializable,Cloneable
public class FloatVectorDataSparse extends FloatVectorData
Stores sparse data for a FloatVector and carries out basic operations.Copyright (c) 2013-2022 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:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.djunits.value.vfloat.vector.data.FloatVectorData
vectorSI
-
-
Constructor Summary
Constructors Constructor Description FloatVectorDataSparse(float[] vectorSI, int[] indices, int size)Create a vector with sparse data.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description FloatVectorDataassign(FloatFunction floatFunction)Apply an operation to each cell.FloatVectorDataSparseassign(FloatFunction2 floatFunction, FloatVectorData right)Apply a binary operation on a cell by cell basis.intcardinality()Compute and return the number of non-zero cells in this indexed value.FloatVectorDataSparsecopy()Create and return a deep copy of the data.FloatVectorDatadivide(FloatVectorData right)Divide two vectors on a cell-by-cell basis.booleanequals(Object obj)float[]getDenseVectorSI()Create and return a dense copy of the data.floatgetSI(int index)Retrieve the SI value of one element of this data.inthashCode()static FloatVectorDataSparseinstantiate(float[] valuesSI)Instantiate a FloatVectorDataSparse from an array.FloatVectorDataminus(FloatVectorData right)Subtract two vectors on a cell-by-cell basis.FloatVectorDataplus(FloatVectorData right)Add two vectors on a cell-by-cell basis.voidsetSI(int index, float valueSI)Sets a value at the index in the vector.intsize()Retrieve the size of the vector.FloatVectorDatatimes(FloatVectorData right)Multiply two vector on a cell-by-cell basis.FloatVectorDataDensetoDense()Return the densely stored equivalent of this data.FloatVectorDataSparsetoSparse()Return the sparsely stored equivalent of this data.-
Methods inherited from class org.djunits.value.vfloat.vector.data.FloatVectorData
checkSizes, compareDenseVectorWithSparseVector, decrementBy, divideBy, incrementBy, instantiate, instantiate, instantiate, instantiate, instantiateList, instantiateMap, multiplyBy, toString, zSum
-
Methods inherited from class org.djunits.value.storage.AbstractStorage
getStorageType, isDense, isSparse
-
-
-
-
Constructor Detail
-
FloatVectorDataSparse
public FloatVectorDataSparse(float[] vectorSI, int[] indices, int size)Create a vector with sparse data.- Parameters:
vectorSI- float[]; 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 Detail
-
cardinality
public final int cardinality()
Compute and return the number of non-zero cells in this indexed value.- Specified by:
cardinalityin classAbstractStorage<FloatVectorData>- Returns:
- int; the number of non-zero cells
-
assign
public FloatVectorData assign(FloatFunction floatFunction)
Apply an operation to each cell.- Specified by:
assignin classFloatVectorData- Parameters:
floatFunction- FloatFunction; the operation to apply- Returns:
- FloatVectorData; this (modified) float vector data object
-
assign
public final FloatVectorDataSparse assign(FloatFunction2 floatFunction, FloatVectorData right)
Apply a binary operation on a cell by cell basis.- Specified by:
assignin classFloatVectorData- Parameters:
floatFunction- FloatFunction2; the binary operation to applyright- FloatVectorData; the right operand for the binary operation- Returns:
- DoubleMatrixData; this (modified) float vector data object
-
toDense
public final FloatVectorDataDense toDense()
Return the densely stored equivalent of this data.- Specified by:
toDensein classFloatVectorData- Returns:
- FloatVectorDataDense; the dense transformation of this data
-
toSparse
public final FloatVectorDataSparse toSparse()
Return the sparsely stored equivalent of this data.- Specified by:
toSparsein classFloatVectorData- Returns:
- FloatVectorDataSparse; the sparse transformation of this data
-
size
public final int size()
Retrieve the size of the vector.- Specified by:
sizein classFloatVectorData- Returns:
- int; the size of the vector
-
getSI
public final float getSI(int index)
Retrieve the SI value of one element of this data.- Specified by:
getSIin classFloatVectorData- Parameters:
index- int; the index to get the value for- Returns:
- the value at the index
-
setSI
public final void setSI(int index, float valueSI)Sets a value at the index in the vector.- Specified by:
setSIin classFloatVectorData- Parameters:
index- int; the index to set the value forvalueSI- float; the value at the index
-
getDenseVectorSI
public final float[] getDenseVectorSI()
Create and return a dense copy of the data.- Specified by:
getDenseVectorSIin classFloatVectorData- Returns:
- float[]; a safe copy of VectorSI
-
copy
public final FloatVectorDataSparse copy()
Create and return a deep copy of the data.- Specified by:
copyin classAbstractStorage<FloatVectorData>- Returns:
- T; a deep copy of the data
-
instantiate
public static FloatVectorDataSparse instantiate(float[] valuesSI)
Instantiate a FloatVectorDataSparse from an array.- Parameters:
valuesSI- float[]; the (SI) values to store- Returns:
- the FloatVectorDataSparse
-
plus
public final FloatVectorData plus(FloatVectorData right)
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.- Specified by:
plusin classFloatVectorData- Parameters:
right- FloatVectorData; the other data object to add- Returns:
- FloatVectorData; the sum of this data object and the other data object
-
minus
public final FloatVectorData minus(FloatVectorData right)
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.- Specified by:
minusin classFloatVectorData- Parameters:
right- FloatVectorData; the other data object to subtract- Returns:
- FloatVectorData; the difference of this data object and the other data object
-
times
public final FloatVectorData times(FloatVectorData right)
Multiply two vector on a cell-by-cell basis. If both vectors are dense, a dense vector is returned, otherwise a sparse vector is returned.- Specified by:
timesin classFloatVectorData- Parameters:
right- FloatVectorData; the other data object to multiply with- Returns:
- FloatVectorData; a new double vector data store holding the result of the multiplications
-
divide
public final FloatVectorData divide(FloatVectorData right) throws ValueRuntimeException
Divide two vectors on a cell-by-cell basis. If this vector is sparse andrightis dense, a sparse vector is returned, otherwise a dense vector is returned.- Specified by:
dividein classFloatVectorData- Parameters:
right- FloatVectorData; the other data object to divide by- Returns:
- FloatVectorData; 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:
hashCodein classFloatVectorData
-
equals
public boolean equals(Object obj)
- Overrides:
equalsin classFloatVectorData
-
-