Class FloatVectorData
java.lang.Object
org.djunits.value.storage.AbstractStorage<FloatVectorData>
org.djunits.value.vfloat.vector.data.FloatVectorData
- All Implemented Interfaces:
Serializable
,Cloneable
- Direct Known Subclasses:
FloatVectorDataDense
,FloatVectorDataSparse
public abstract class FloatVectorData extends AbstractStorage<FloatVectorData> implements Serializable
Stores the data for a FloatVector and carries out basic operations.
Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
- Author:
- Alexander Verbraeck, Peter Knoppers
- See Also:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description protected float[]
vectorSI
The internal storage of the Vector; can be sparse or dense. -
Constructor Summary
Constructors Constructor Description FloatVectorData(StorageType storageType)
Construct a new FloatVectorData object. -
Method Summary
Modifier and Type Method Description abstract 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
compareDenseVectorWithSparseVector(FloatVectorDataDense dm, FloatVectorDataSparse sm)
Compare contents of a dense and a sparse vector.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.FloatVectorData
divideBy(FloatVectorData right)
Divide the values of a vector by the values of another vector on a cell-by-cell basis.boolean
equals(Object obj)
abstract float[]
getDenseVectorSI()
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()
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<Float> values, Scale scale, StorageType storageType)
Instantiate a FloatVectorData with the right data type.static FloatVectorData
instantiate(SortedMap<Integer,Float> valueMap, int length, Scale scale, StorageType storageType)
Instantiate a FloatVectorData with the right data type.static <U extends Unit<U>, S extends FloatScalarInterface<U, S>>
FloatVectorDatainstantiate(S[] values, StorageType storageType)
Instantiate a FloatVectorData with the right data type.static <U extends Unit<U>, S extends FloatScalarInterface<U, S>>
FloatVectorDatainstantiateList(List<S> valueList, StorageType storageType)
Instantiate a FloatVectorData with the right data type.static <U extends Unit<U>, S extends FloatScalarInterface<U, S>>
FloatVectorDatainstantiateMap(SortedMap<Integer,S> values, int length, StorageType storageType)
Instantiate a FloatVectorData with the right data type.abstract FloatVectorData
minus(FloatVectorData right)
Subtract two vectors on a cell-by-cell basis.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.String
toString()
float
zSum()
Compute and return the sum of all values.Methods inherited from class org.djunits.value.storage.AbstractStorage
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
public static FloatVectorData instantiate(float[] values, Scale scale, StorageType storageType) throws ValueRuntimeExceptionInstantiate 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:
ValueRuntimeException
- when values are null, or storageType is null
-
instantiate
public static FloatVectorData instantiate(List<Float> values, Scale scale, StorageType storageType) throws ValueRuntimeExceptionInstantiate a FloatVectorData with the right data type.- Parameters:
values
- List<Float>; the 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:
ValueRuntimeException
- when list is null, or storageType is null
-
instantiate
public static <U extends Unit<U>, S extends FloatScalarInterface<U, S>> FloatVectorData instantiate(S[] values, StorageType storageType) throws ValueRuntimeExceptionInstantiate 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:
ValueRuntimeException
- when values is null, or storageType is null
-
instantiateList
public static <U extends Unit<U>, S extends FloatScalarInterface<U, S>> FloatVectorData instantiateList(List<S> valueList, StorageType storageType) throws ValueRuntimeExceptionInstantiate a FloatVectorData with the right data type.- Type Parameters:
U
- the unit typeS
- the corresponding scalar type- Parameters:
valueList
- List<? extends FloatScalarInterface>; the FloatScalar values to storestorageType
- StorageType; the data type to use- Returns:
- FloatVectorData; the FloatVectorData with the right data type
- Throws:
ValueRuntimeException
- when values is null, or storageType is null
-
instantiate
public static FloatVectorData instantiate(SortedMap<Integer,Float> valueMap, int length, Scale scale, StorageType storageType) throws ValueRuntimeExceptionInstantiate a FloatVectorData with the right data type.- Parameters:
valueMap
- SortedMap<Integer,Float>; the FloatScalar values to storelength
- int; the length 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:
ValueRuntimeException
- when values is null, or storageType is null
-
instantiateMap
public static <U extends Unit<U>, S extends FloatScalarInterface<U, S>> FloatVectorData instantiateMap(SortedMap<Integer,S> values, int length, StorageType storageType) throws ValueRuntimeExceptionInstantiate a FloatVectorData with the right data type.- Type Parameters:
U
- the unit typeS
- the scalar type to use- Parameters:
values
- SortedMap<Integer,S>; the FloatScalar values to storelength
- int; the length of the vector to pad with 0 after last entry in mapstorageType
- StorageType; the data type to use- Returns:
- FloatVectorData; the FloatVectorData with the right data type
- Throws:
ValueRuntimeException
- when values is null, or storageType is null
-
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 ValueRuntimeExceptionApply 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
-