Class AliasMap<K,V,A>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.HashMap<K,V>
org.nuiton.util.AliasMap<K,V,A>
All Implemented Interfaces:
Serializable, Cloneable, Map<K,V>

public class AliasMap<K,V,A> extends HashMap<K,V>
Une map base sur une HashMap qui permet pour une valeur d'ajouter d'autres cles. Cette nouvelle cle est un alias, un alias peut-etre utilise pour plusieurs valeurs. Si l'on demande la valeur associe a un Alias, cela retourne une liste contenant toutes les valeurs pour lequel cette Alias est utilise. Cela permet de stocker des objets avec une cle principale et unique, puis avec des alias. Et ainsi recherche les valeurs qui ont un ensemble d'alias via la methode getValueAlias(Object[]) ou supprimer les valeurs qui ont un ensemble d'Alias en commun via la methode removeValue(A...) Si la cle ne vous importe que peu, vous pouvez par exemple utiliser UUID.randomUUID() pour generer une cle unique.
Since:
3.6.9
Author:
Benjamin Poussin - poussin@codelutin.com
See Also:
  • Field Details

    • aliases

      protected org.apache.commons.collections4.MultiValuedMap<A,K> aliases
      key: alias, value: key
    • keys

      protected org.apache.commons.collections4.MultiValuedMap<K,A> keys
      key: key, value: alias
  • Constructor Details

    • AliasMap

      public AliasMap()
  • Method Details

    • put

      public V put(K key, V value, A alias1, A... alias)
      Ajoute une valeur dans la map avec un ensemble d'alias associe
      Parameters:
      key - identifiant unique pour cette valeur
      value - la valeur
      alias1 - le premier alias à saisir
      alias - les alias de la valeur
      Returns:
      FIXME
    • putAlias

      protected void putAlias(K key, A alias1, A... alias)
      Ajoute des alias a une cle
      Parameters:
      key - FIXME
      alias1 - FIXME
      alias - FIXME
    • getKeyAlias

      public Collection<K> getKeyAlias(A... alias)
      Retoure les cles en commun de tous les alias. Les cles retournees sont celle qui ont tous les alias.
      K1: a, b, c
      K2: b, c, d
      K3: c, d, e
      
      getKeyAlias(a, b, c) retourne [K1]
      getKeyAlias(b, c) retourne [K1, K2]
      getKeyAlias(c) retourne [K1, K2, K3]
      getKeyAlias(d) retourne [K2, K3]
      getKeyAlias(z) retourne []
      
      Parameters:
      alias - FIXME
      Returns:
      une liste vide si aucune valeur ne correspond au alias en argument
    • getValueAlias

      public Collection<V> getValueAlias(A... alias)
      Retoure les valeurs en commun de tous les alias. Les valeurs retournees sont celle qui ont tous les alias.
      V1: a, b, c
      V2: b, c, d
      V3: c, d, e
      
      getKeyAlias(a, b, c) retourne [V1]
      getKeyAlias(b, c) retourne [V1, V2]
      getKeyAlias(c) retourne [V1, V2, V3]
      getKeyAlias(d) retourne [V2, V3]
      getKeyAlias(z) retourne []
      
      Parameters:
      alias - FIXME
      Returns:
      une liste vide si aucune valeur ne correspond au alias en argument
    • getAlias

      public Collection<A> getAlias(K key)
      Retourne la liste d'alias associee avec une cle
      K1: a, b, c
      K2: b, c, d
      K3: c, d, e
      
      getAlias(K1) retourne [a, b, c]
      getAlias(k3) retourne [c, d, e]
      getKeyAlias(k9) retourne []
      
      Parameters:
      key - FIXME
      Returns:
      FIXME
    • remove

      public V remove(Object key)
      Retire une cle ainsi que tous ses alias
      K1: a, b, c
      K2: b, c, d
      K3: c, d, e
      
      remove(K1) il reste K2: [b, c, d], K3: [c, d, e]
      
      Specified by:
      remove in interface Map<K,V>
      Overrides:
      remove in class HashMap<K,V>
      Parameters:
      key - FIXME
      Returns:
      FIXME
    • removeValue

      public Collection<V> removeValue(A... alias)
      Supprime toutes les valeurs et leur cle associe aux alias
      K1: a, b, c
      K2: b, c, d
      K3: c, d, e
      
      removeValue(b, c) il reste K3: [c, d, e]
      
      Parameters:
      alias - FIXME
      Returns:
      la liste de valeur qui a ete supprime de la map
    • removeAlias

      public void removeAlias(A... alias)
      Supprime des alias quelque soit leur cle
      K1: a, b, c
      K2: b, c, d
      K3: c, d, e
      
      removeAlias(a, b) alors K1: [c], k2: [c, d], k3: [c, d, e]
      removeAlias(c) alors K1: [a, b], k2: [b, d], k3: [d, e]
      getKeyAlias(z) alors rien ne change car cette alias n'existe pas
      
      Parameters:
      alias - FIXME