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:
java.io.Serializable, java.lang.Cloneable, java.util.Map<K,​V>

public class AliasMap<K,​V,​A>
extends java.util.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:
Serialized Form
  • Nested Class Summary

    Nested classes/interfaces inherited from class java.util.AbstractMap

    java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,​V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,​V extends java.lang.Object>

    Nested classes/interfaces inherited from interface java.util.Map

    java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected org.apache.commons.collections4.MultiValuedMap<A,​K> aliases
    key: alias, value: key
    protected org.apache.commons.collections4.MultiValuedMap<K,​A> keys
    key: key, value: alias
  • Constructor Summary

    Constructors 
    Constructor Description
    AliasMap()  
  • Method Summary

    Modifier and Type Method Description
    java.util.Collection<A> getAlias​(K key)
    Retourne la liste d'alias associee avec une cle
    java.util.Collection<K> getKeyAlias​(A... alias)
    Retoure les cles en commun de tous les alias.
    java.util.Collection<V> getValueAlias​(A... alias)
    Retoure les valeurs en commun de tous les alias.
    V put​(K key, V value, A alias1, A... alias)
    Ajoute une valeur dans la map avec un ensemble d'alias associe
    protected void putAlias​(K key, A alias1, A... alias)
    Ajoute des alias a une cle
    V remove​(java.lang.Object key)
    Retire une cle ainsi que tous ses alias
    void removeAlias​(A... alias)
    Supprime des alias quelque soit leur cle
    java.util.Collection<V> removeValue​(A... alias)
    Supprime toutes les valeurs et leur cle associe aux alias

    Methods inherited from class java.util.HashMap

    clear, clone, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, forEach, get, getOrDefault, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, replace, replace, replaceAll, size, values

    Methods inherited from class java.util.AbstractMap

    equals, hashCode, toString

    Methods inherited from class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.util.Map

    equals, hashCode
  • 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

  • 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 java.util.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 java.util.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 java.util.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​(java.lang.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 java.util.Map<K,​V>
      Overrides:
      remove in class java.util.HashMap<K,​V>
      Parameters:
      key - FIXME
      Returns:
      FIXME
    • removeValue

      public java.util.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