Class MatrixMap.MatrixMapElastic<E>

java.lang.Object
org.nuiton.util.MatrixMap.MatrixMapElastic<E>
Type Parameters:
E - FIXME
All Implemented Interfaces:
java.lang.Iterable<E>, MatrixMap<E>
Enclosing interface:
MatrixMap<E>

public static class MatrixMap.MatrixMapElastic<E>
extends java.lang.Object
implements MatrixMap<E>
Implantation particuliere de matrice, qui lorsqu'on lui passe des dimension qui n'existe pas, elle les ajoutes dans les semantiques. Ceci n'est vrai que pour le set avec des semantiques, le set avec des indices ne rend pas la matrice elastique.

Cette classe fonctionne avec une matrice interne que l'on change lorsque l'on a besoin de modifier les dimensions. Le changement de dimension a donc un cout (creation d'une nouvelle matrice, copie des elements)

Si on cree une sous matrice, et que l'on modifie la matrice mere La sous matrice n'est pas impacter, puisqu'elle est base sur l'ancienne represention interne de la matrice elastique, les deux matrices n'ont donc plus de lien.

Les methodes reduce et extend retourne de nouvelle matrice qui ne sont pas elastique. Si on veut qu'elle le soit, il faut les reencapsuler

  • Field Details

  • Constructor Details

  • Method Details

    • getInternalMatrixMap

      public MatrixMap<E> getInternalMatrixMap()
    • setInternalMatrixMap

      public void setInternalMatrixMap​(MatrixMap<E> internalMatrixMap)
    • iterator

      public MatrixMap.MatrixMapIterator<E> iterator()
      Specified by:
      iterator in interface java.lang.Iterable<E>
      Specified by:
      iterator in interface MatrixMap<E>
    • copy

      public MatrixMap<E> copy()
      Description copied from interface: MatrixMap
      Copy la matrice pour pouvoir la modifier sans perdre les donnees initiales.
      Specified by:
      copy in interface MatrixMap<E>
      Returns:
      new matrix
    • getSemantics

      public MatrixMap.SemanticList[] getSemantics()
      Specified by:
      getSemantics in interface MatrixMap<E>
    • getSemantic

      public MatrixMap.SemanticList getSemantic​(int dim)
      Specified by:
      getSemantic in interface MatrixMap<E>
    • setSemantic

      public void setSemantic​(int dim, java.util.List sem)
      Specified by:
      setSemantic in interface MatrixMap<E>
    • setName

      public void setName​(java.lang.String name)
      Specified by:
      setName in interface MatrixMap<E>
    • getName

      public java.lang.String getName()
      Specified by:
      getName in interface MatrixMap<E>
    • getDimensionNames

      public java.lang.String[] getDimensionNames()
      Specified by:
      getDimensionNames in interface MatrixMap<E>
    • setDimensionNames

      public void setDimensionNames​(java.lang.String[] names)
      Specified by:
      setDimensionNames in interface MatrixMap<E>
    • setDimensionName

      public void setDimensionName​(int dim, java.lang.String name)
      Specified by:
      setDimensionName in interface MatrixMap<E>
    • getDimensionName

      public java.lang.String getDimensionName​(int dim)
      Specified by:
      getDimensionName in interface MatrixMap<E>
    • getDimCount

      public int getDimCount()
      Specified by:
      getDimCount in interface MatrixMap<E>
    • getDim

      public int[] getDim()
      Specified by:
      getDim in interface MatrixMap<E>
    • getDim

      public int getDim​(int d)
      Specified by:
      getDim in interface MatrixMap<E>
    • map

      public MatrixMap<E> map​(MatrixMap.MapFunction<E> f)
      Description copied from interface: MatrixMap
      Applique sur chaque element de la matrice la fonction f
      Specified by:
      map in interface MatrixMap<E>
      Parameters:
      f - la fonction a appliquer
      Returns:
      Retourne la matrice elle meme. Les modifications sont faites directement dessus
    • getValueIndex

      public E getValueIndex​(int... coordinates)
      Description copied from interface: MatrixMap
      Retourne l'element a une certaine position en utilisant des indices ex: 2,3,1
      Specified by:
      getValueIndex in interface MatrixMap<E>
      Parameters:
      coordinates - FIXME
      Returns:
      FIXME
    • setValueIndex

      public void setValueIndex​(E value, int... coordinates)
      Description copied from interface: MatrixMap
      Modifie l'element a une certaine position en utilisant des indices ex: 2,3,1
      Specified by:
      setValueIndex in interface MatrixMap<E>
      Parameters:
      value - la nouvelle valeur
      coordinates - FIXME
    • getValue

      public E getValue​(java.lang.Object... coordinates)
      Description copied from interface: MatrixMap
      Retourne l'element a une certaine position en utilisant les semantiques
      Specified by:
      getValue in interface MatrixMap<E>
      Parameters:
      coordinates - FIXME
      Returns:
      FIXME
    • setValue

      public void setValue​(E value, java.lang.Object... coordinates)
      Description copied from interface: MatrixMap
      Modifie l'element a une certaine position en utilisant les semantiques
      Specified by:
      setValue in interface MatrixMap<E>
      Parameters:
      value - la nouvelle valeur
      coordinates - FIXME
    • equals

      public boolean equals​(java.lang.Object obj)
      Overrides:
      equals in class java.lang.Object
    • equals

      public boolean equals​(MatrixMap mat)
      Description copied from interface: MatrixMap
      Verifie que deux matrices sont completement equals (dimension, semantique, nom, valeur, ...)
      Specified by:
      equals in interface MatrixMap<E>
      Parameters:
      mat - FIXME
      Returns:
      FIXME
    • equalsValues

      public boolean equalsValues​(MatrixMap<E> mat)
      Description copied from interface: MatrixMap
      Verifie si les matrices sont egales en ne regardant que les valeurs et pas les semantiques
      Specified by:
      equalsValues in interface MatrixMap<E>
      Parameters:
      mat - FIXME
      Returns:
      equality on values
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
    • toStringGeneric

      public java.lang.String toStringGeneric()
      Description copied from interface: MatrixMap
      Representation string de la matrice quelque soit le nombre de dimension
      Specified by:
      toStringGeneric in interface MatrixMap<E>
      Returns:
      FIXME
    • isValidCoordinates

      public boolean isValidCoordinates​(java.lang.Object[] semantics)
      Description copied from interface: MatrixMap
      Indique si les semantiques passées en argument sont valable pour la matrice courante
      Specified by:
      isValidCoordinates in interface MatrixMap<E>
      Parameters:
      semantics - FIXME
      Returns:
      FIXME
    • paste

      public MatrixMap paste​(MatrixMap<E> mat)
      Description copied from interface: MatrixMap
      Copie une matrice dans la matrice actuelle. La matrice à copier à le même nombre de dimension. Si la matrice à copier est trop grande seul les éléments pouvant être copier le seront.
      Specified by:
      paste in interface MatrixMap<E>
      Parameters:
      mat - la matrice à copier
      Returns:
      return la matrice courante.
    • getSubMatrix

      public MatrixMap<E> getSubMatrix​(int dim, java.lang.Object start, int nb)
      Description copied from interface: MatrixMap
      Permet de prendre une sous matrice dans la matrice courante. La sous matrice a le même nombre de dimensions mais sur une des dimensions on ne prend que certain élément.
      Specified by:
      getSubMatrix in interface MatrixMap<E>
      Parameters:
      dim - la dimension dans lequel on veut une sous matrice
      start - la position dans dim d'ou il faut partir pour prendre la sous matrice. 0 ≤ start < dim.size si start est négatif alors la position de départ est calculé par rapport à la fin de la dimension, pour avoir le dernier élément il faut passer -1
      nb - le nombre d'élément à prendre dans la dimension si nb est inférieur ou égal à 0 alors cela indique qu'il faut prendre tous les éléments jusqu'à la fin de la dimension.
      Returns:
      new matrix
    • getSubMatrix

      public MatrixMap<E> getSubMatrix​(int dim, java.lang.Object... elem)
      Description copied from interface: MatrixMap
      Permet de prendre une sous matrice dans la matrice courante. La sous matrice a le même nombre de dimensions mais sur une des dimensions on ne prend que certain élément.
      Specified by:
      getSubMatrix in interface MatrixMap<E>
      Parameters:
      dim - la dimension dans lequel on veut une sous matrice
      elem - les éléments dans la dimension à conserver
      Returns:
      new matrix
    • getSubMatrix

      public MatrixMap<E> getSubMatrix​(java.lang.Object[]... elems)
      Description copied from interface: MatrixMap
      Permet de prendre une sous matrice dans la matrice courante.

      Réalise plusieurs appels à MatrixMap.getSubMatrix(int, Object...) suivant l'implémentation.

      Specified by:
      getSubMatrix in interface MatrixMap<E>
      Parameters:
      elems - les éléments dans la dimension à conserver
      Returns:
      new matrix
    • reduce

      public MatrixMap<E> reduce()
      Description copied from interface: MatrixMap
      Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un élement soit supprimée. Au pire cette méthode retourne une matrice à une seule dimension à un seul élément.
      Specified by:
      reduce in interface MatrixMap<E>
      Returns:
      une nouvelle matrice plus petite que la matrice actuelle ou egal s'il n'y a aucune dimension à supprimer
    • reduceDims

      public MatrixMap<E> reduceDims​(int... dims)
      Description copied from interface: MatrixMap
      Reduit le matrice seulement sur les dimensions passées en argument. Si une des dimensions passées en arguement n'a pas qu'un seul élément, cette dimension n'est pas prise en compte.
      Specified by:
      reduceDims in interface MatrixMap<E>
      Parameters:
      dims - les dimensions sur lequel il faut faire la reduction
      Returns:
      une nouvelle matrice
    • reduce

      public MatrixMap<E> reduce​(int minNbDim)
      Description copied from interface: MatrixMap
      Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un élement soit supprimée. Au pire cette méthode retourne une matrice à une seule dimension à un seul élément.
      Specified by:
      reduce in interface MatrixMap<E>
      Parameters:
      minNbDim - le nombre minimum de dimension que l'on souhaite pour la matrice résultat
      Returns:
      une nouvelle matrice plus petite que la matrice actuelle ou egal s'il n'y a aucune dimension à supprimer
    • extend

      public MatrixMap<E> extend​(java.lang.Object... sems)
      Description copied from interface: MatrixMap
      Permet de retourner une nouvelle matrice ayant les semantiques passées en parametre. La nouvelle matrice contient les données de l'ancienne matrice par copie en fonction des semantiques
      Specified by:
      extend in interface MatrixMap<E>
      Parameters:
      sems - FIXME
      Returns:
      FIXME