Class FloatVectorData
java.lang.Object
org.djunits.value.storage.Storage<FloatVectorData>
org.djunits.value.vfloat.vector.data.FloatVectorData
- All Implemented Interfaces:
Serializable
,Cloneable
- Direct Known Subclasses:
FloatVectorDataDense
,FloatVectorDataSparse
Stores the data for a FloatVector 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
Modifier and TypeFieldDescriptionprotected float[]
The internal storage of the Vector; can be sparse or dense. -
Constructor Summary
ConstructorDescriptionFloatVectorData
(StorageType storageType) Construct a new FloatVectorData object. -
Method Summary
Modifier and TypeMethodDescriptionabstract FloatVectorData
assign
(FloatFunction floatFunction) Apply an operation to each cell.(package private) abstract FloatVectorData
assign
(FloatFunction2 floatFunction2, FloatVectorData right) Apply a binary operation on a cell by cell basis.protected void
checkSizes
(FloatVectorData other) Check the sizes of this data object and the other data object.protected boolean
Compare contents of a dense and a sparse vector.final FloatVectorData
decrementBy
(FloatVectorData right) Subtract a vector from this vector on a cell-by-cell basis.abstract FloatVectorData
divide
(FloatVectorData right) Divide two vectors on a cell-by-cell basis.final FloatVectorData
divideBy
(FloatVectorData right) Divide the values of a vector by the values of another vector on a cell-by-cell basis.boolean
abstract float[]
Create and return a dense copy of the data.abstract float
getSI
(int index) Retrieve the SI value of one element of this data.int
hashCode()
final FloatVectorData
incrementBy
(FloatVectorData right) Add a vector to this vector on a cell-by-cell basis.static FloatVectorData
instantiate
(float[] values, Scale scale, StorageType storageType) Instantiate a FloatVectorData with the right data type.static FloatVectorData
instantiate
(List<? extends Number> values, Scale scale, StorageType storageType) Instantiate a FloatVectorData with the right data type.static FloatVectorData
instantiate
(Map<Integer, ? extends Number> valueMap, int size, Scale scale, StorageType storageType) Instantiate a FloatVectorData with the right data type.static <U extends Unit<U>,
S extends FloatScalar<U, S>>
FloatVectorDatainstantiate
(S[] values, StorageType storageType) Instantiate a FloatVectorData with the right data type.abstract FloatVectorData
minus
(FloatVectorData right) Subtract two vectors on a cell-by-cell basis.final FloatVectorData
multiplyBy
(FloatVectorData right) Multiply a vector with the values of another vector on a cell-by-cell basis.abstract FloatVectorData
plus
(FloatVectorData right) Add two vectors on a cell-by-cell basis.abstract void
setSI
(int index, float valueSI) Sets a value at the index in the vector.abstract int
size()
Retrieve the size of the vector.abstract FloatVectorData
times
(FloatVectorData right) Multiply two vector on a cell-by-cell basis.abstract FloatVectorDataDense
toDense()
Return the densely stored equivalent of this data.abstract FloatVectorDataSparse
toSparse()
Return the sparsely stored equivalent of this data.toString()
final float
zSum()
Compute and return the sum of all values.Methods inherited from class org.djunits.value.storage.Storage
cardinality, copy, getStorageType, isDense, isSparse
-
Field Details
-
vectorSI
protected float[] vectorSIThe internal storage of the Vector; can be sparse or dense.
-
-
Constructor Details
-
FloatVectorData
FloatVectorData(StorageType storageType) Construct a new FloatVectorData object.- Parameters:
storageType
- StorageType; the data type.
-
-
Method Details
-
instantiate
Instantiate a FloatVectorData with the right data type.- Parameters:
values
- float[]; the (SI) values to storescale
- Scale; the scale of the unit to use for conversion to SIstorageType
- StorageType; the data type to use- Returns:
- FloatVectorData; the FloatVectorData with the right data type
- Throws:
NullPointerException
- when values are null, or storageType is null
-
instantiate
public static FloatVectorData instantiate(List<? extends Number> values, Scale scale, StorageType storageType) Instantiate a FloatVectorData with the right data type.- Parameters:
values
- List<? extends Number>; the values to store, can either be a list of numbers, or a list of FloatScalarsscale
- Scale; the scale of the unit to use for conversion to SIstorageType
- StorageType; the data type to use- Returns:
- FloatVectorData; the FloatVectorData with the right data type
- Throws:
NullPointerException
- when list is null, or storageType is null
-
instantiate
public static <U extends Unit<U>,S extends FloatScalar<U, FloatVectorData instantiateS>> (S[] values, StorageType storageType) Instantiate a FloatVectorData with the right data type.- Type Parameters:
U
- the unit typeS
- the corresponding scalar type- Parameters:
values
- S[]; the values to storestorageType
- StorageType; the data type to use- Returns:
- FloatVectorData; the FloatVectorData with the right data type
- Throws:
NullPointerException
- when values is null, or storageType is null
-
instantiate
public static FloatVectorData instantiate(Map<Integer, ? extends Number> valueMap, int size, Scale scale, StorageType storageType) throws IllegalArgumentException, IndexOutOfBoundsExceptionInstantiate a FloatVectorData with the right data type.- Parameters:
valueMap
- Map<Integer,? extends Number>; the values to store; either Numbers or FloatScalarssize
- int; the size of the vector to pad with 0 after last entry in mapscale
- Scale; the scale of the unit to use for conversion to SIstorageType
- StorageType; the data type to use- Returns:
- FloatVectorData; the FloatVectorData with the right data type
- Throws:
IllegalArgumentException
- when length < 0NullPointerException
- when values is null, or storageType is nullIndexOutOfBoundsException
- when one of the keys is out of range with the given size
-
size
public abstract int size()Retrieve the size of the vector.- Returns:
- int; the size of the vector
-
toDense
Return the densely stored equivalent of this data.- Returns:
- FloatVectorDataDense; the dense transformation of this data
-
toSparse
Return the sparsely stored equivalent of this data.- Returns:
- FloatVectorDataSparse; the sparse transformation of this data
-
getSI
public abstract float getSI(int index) Retrieve the SI value of one element of this data.- Parameters:
index
- int; the index to get the value for- Returns:
- the value at the index
-
setSI
public abstract void setSI(int index, float valueSI) Sets a value at the index in the vector.- Parameters:
index
- int; the index to set the value forvalueSI
- float; the value at the index
-
zSum
public final float zSum()Compute and return the sum of all values.- Returns:
- double; the sum of the values of all cells
-
getDenseVectorSI
public abstract float[] getDenseVectorSI()Create and return a dense copy of the data.- Returns:
- float[]; a safe copy of VectorSI
-
checkSizes
Check the sizes of this data object and the other data object.- Parameters:
other
- FloatVectorData; the other data object- Throws:
ValueRuntimeException
- if vectors have different lengths
-
assign
Apply an operation to each cell.- Parameters:
floatFunction
- FloatFunction; the operation to apply- Returns:
- FloatVectorData; this (modified) float vector data object
-
assign
abstract FloatVectorData assign(FloatFunction2 floatFunction2, FloatVectorData right) throws ValueRuntimeException Apply a binary operation on a cell by cell basis.- Parameters:
floatFunction2
- FloatFunction2; the binary operation to applyright
- FloatVectorData; the right operand for the binary operation- Returns:
- DoubleMatrixData; this (modified) float vector data object
- Throws:
ValueRuntimeException
- when the sizes of the vectors do not match
-
plus
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.- Parameters:
right
- FloatVectorData; the other data object to add- Returns:
- FloatVectorData; the sum of this data object and the other data object
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
incrementBy
Add a vector to this vector on a cell-by-cell basis. The type of vector (sparse, dense) stays the same.- Parameters:
right
- FloatVectorData; the other data object to add- Returns:
- FloatVectorData; this modified float vector data object
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
minus
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.- Parameters:
right
- FloatVectorData; the other data object to subtract- Returns:
- FloatVectorData; the difference of this data object and the other data object
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
decrementBy
Subtract a vector from this vector on a cell-by-cell basis. The type of vector (sparse, dense) stays the same.- Parameters:
right
- FloatVectorData; the other data object to subtract- Returns:
- FloatVectorData; this modified float vector data object
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
times
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.- Parameters:
right
- FloatVectorData; the other data object to multiply with- Returns:
- FloatVectorData; a new double vector data store holding the result of the multiplications
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
multiplyBy
Multiply a vector with the values of another vector on a cell-by-cell basis. The type of vector (sparse, dense) stays the same.- Parameters:
right
- FloatVectorData; the other data object to multiply with- Returns:
- FloatVectorData; this modified float vector data store
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
divide
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.- 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
-
divideBy
Divide the values of a vector by the values of another vector on a cell-by-cell basis. The type of vector (sparse, dense) stays the same.- Parameters:
right
- FloatVectorData; the other data object to divide by- Returns:
- FloatVectorData; this modified float vector data store
- Throws:
ValueRuntimeException
- if vectors have different lengths
-
hashCode
public int hashCode() -
compareDenseVectorWithSparseVector
protected boolean compareDenseVectorWithSparseVector(FloatVectorDataDense dm, FloatVectorDataSparse sm) Compare contents of a dense and a sparse vector.- Parameters:
dm
- FloatVectorDataDense; the dense vectorsm
- FloatVectorDataSparse; the sparse vector- Returns:
- boolean; true if the contents are equal
-
equals
-
toString
-