Package org.nuiton.math.matrix
Class LazyVector
- java.lang.Object
-
- org.nuiton.math.matrix.LazyVector
-
- All Implemented Interfaces:
Vector
public class LazyVector extends Object implements Vector
Cette classe encapsule un Vector et permet de l'initialiser reellement que lorsqu'on souhaite modifier une valeur. Cela permet de ne pas initialise d'enorme tableau s'il n'y en a pas besoin. Chaque lazy est initialisé avec un Vector non initialise, lorsque l'on fait un paste, si le vector a partir duquel on fait le paste est aussi un lazy, alors on partage le backend jusqu'a ce qu'un des deux vector veuille modifier une de ses valeurs.- Version:
- $Revision$ Last update: $Date$ by : $Author$
- Author:
- poussin
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
LazyVector.DummyVectorIterator
Iterator qui retourne toujours la meme valeur un certain nombre de foisprotected class
LazyVector.LazyVectorIterator
Iterator qui prepare le backend que lors d'un set
-
Field Summary
Fields Modifier and Type Field Description protected Vector
backend
reel backend, not initialized since not necessaryprotected long
capacity
protected boolean
isInitBackend
protected AtomicInteger
users
-
Constructor Summary
Constructors Constructor Description LazyVector(Vector backend)
Create new lazy, with initialized backendLazyVector(Vector backend, long capacity)
Create new lazy with not initialized backend
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(Vector v)
Ajoute les valeurs du vector passé en argument a ce vector.boolean
equals(Object o)
void
forEach(VectorForEachFunction f)
void
forEachNotZero(VectorForEachFunction f)
String
getInfo()
return information on this vector.double
getMaxOccurence()
double
getMaxOccurrence()
Retourne la valeur la plus utilise dans le vectorlong
getNumberOfAssignedValue()
Returne number of assigned value, assigned value is value stored in memorydouble
getValue(long pos)
int
hashCode()
void
init(long capacity)
Init vector, before this method call, vector is in indetermined state.boolean
isImplementedAdd(Vector v)
Permet de savoir si add est implanté par ce vector.boolean
isImplementedMap()
Permet de savoir si map est implanté par ce vector.boolean
isImplementedMinus(Vector v)
Permet de savoir si minus est implanté par ce vector.boolean
isImplementedPaste(Vector v)
Permet de savoir si paste est implanté par ce vector.VectorIterator
iterator()
Retourne un objet Inc pret a etre utilisé pour boucler sur tous les element de la matrice.VectorIterator
iteratorNotZero()
Retourne un objet Inc pret a etre utilisé pour boucler sur tous les element different de 0 de la matrice.void
map(MapFunction f)
applique a chaque valeur du vector laMapFunction
.void
minus(Vector v)
Soustrait les valeurs du vector passé en argument a ce vector.void
paste(Vector source)
Copie les valeurs du vector passé en argument dans ce vector.protected void
pasteToBackend(Vector target, Vector copy)
Before call this method backend, must be initializedprotected void
prepareBackendForModification()
void
setValue(long pos, double value)
long
size()
-
-
-
Field Detail
-
isInitBackend
protected boolean isInitBackend
-
backend
protected Vector backend
reel backend, not initialized since not necessary
-
users
protected AtomicInteger users
-
capacity
protected long capacity
-
-
Method Detail
-
init
public void init(long capacity)
Description copied from interface:Vector
Init vector, before this method call, vector is in indetermined state. multiple call to init method must be permit. Only first call must do some work, extra call must do nothing
-
getInfo
public String getInfo()
Description copied from interface:Vector
return information on this vector. This information depends on implementation example: - size - max occurence number - ...
-
getNumberOfAssignedValue
public long getNumberOfAssignedValue()
Description copied from interface:Vector
Returne number of assigned value, assigned value is value stored in memory- Specified by:
getNumberOfAssignedValue
in interfaceVector
-
getMaxOccurence
public double getMaxOccurence()
- Specified by:
getMaxOccurence
in interfaceVector
-
getMaxOccurrence
public double getMaxOccurrence()
Description copied from interface:Vector
Retourne la valeur la plus utilise dans le vector- Specified by:
getMaxOccurrence
in interfaceVector
- Returns:
-
isImplementedPaste
public boolean isImplementedPaste(Vector v)
Description copied from interface:Vector
Permet de savoir si paste est implanté par ce vector.- Specified by:
isImplementedPaste
in interfaceVector
- Parameters:
v
- vector to test- Returns:
true
if operation is supported
-
isImplementedAdd
public boolean isImplementedAdd(Vector v)
Description copied from interface:Vector
Permet de savoir si add est implanté par ce vector.- Specified by:
isImplementedAdd
in interfaceVector
- Parameters:
v
- vector to test- Returns:
true
if operation is supported
-
isImplementedMinus
public boolean isImplementedMinus(Vector v)
Description copied from interface:Vector
Permet de savoir si minus est implanté par ce vector.- Specified by:
isImplementedMinus
in interfaceVector
- Parameters:
v
- vector to test- Returns:
true
if operation is supported
-
isImplementedMap
public boolean isImplementedMap()
Description copied from interface:Vector
Permet de savoir si map est implanté par ce vector.- Specified by:
isImplementedMap
in interfaceVector
- Returns:
true
if operation is supported
-
paste
public void paste(Vector source)
Description copied from interface:Vector
Copie les valeurs du vector passé en argument dans ce vector.
-
add
public void add(Vector v)
Description copied from interface:Vector
Ajoute les valeurs du vector passé en argument a ce vector.
-
minus
public void minus(Vector v)
Description copied from interface:Vector
Soustrait les valeurs du vector passé en argument a ce vector.
-
map
public void map(MapFunction f)
Description copied from interface:Vector
applique a chaque valeur du vector laMapFunction
. ATTENTION cette function ne doit pas converser d'etat interne qui modifierait son comportement a chaque execution, sinon cette methode ne fonctionne pas, car pour les Vector implanter a base de Map la fonction n'est appliqué qu'au defaultValue et au valeur deja existante
-
prepareBackendForModification
protected void prepareBackendForModification()
-
pasteToBackend
protected void pasteToBackend(Vector target, Vector copy)
Before call this method backend, must be initialized- Parameters:
target
-copy
-
-
iterator
public VectorIterator iterator()
Description copied from interface:Vector
Retourne un objet Inc pret a etre utilisé pour boucler sur tous les element de la matrice.
-
iteratorNotZero
public VectorIterator iteratorNotZero()
Description copied from interface:Vector
Retourne un objet Inc pret a etre utilisé pour boucler sur tous les element different de 0 de la matrice.- Specified by:
iteratorNotZero
in interfaceVector
- Returns:
- un objet Inc pret à être utilisé
-
forEach
public void forEach(VectorForEachFunction f)
-
forEachNotZero
public void forEachNotZero(VectorForEachFunction f)
- Specified by:
forEachNotZero
in interfaceVector
-
-