Package org.nuiton.util
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
-
Field Summary
-
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 clejava.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.Vput(K key, V value, A alias1, A... alias)Ajoute une valeur dans la map avec un ensemble d'alias associeprotected voidputAlias(K key, A alias1, A... alias)Ajoute des alias a une cleVremove(java.lang.Object key)Retire une cle ainsi que tous ses aliasvoidremoveAlias(A... alias)Supprime des alias quelque soit leur clejava.util.Collection<V>removeValue(A... alias)Supprime toutes les valeurs et leur cle associe aux aliasMethods 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
-
Field Details
-
Constructor Details
-
AliasMap
public AliasMap()
-
-
Method Details
-
put
Ajoute une valeur dans la map avec un ensemble d'alias associe- Parameters:
key- identifiant unique pour cette valeurvalue- la valeuralias1- le premier alias à saisiralias- les alias de la valeur- Returns:
- FIXME
-
putAlias
Ajoute des alias a une cle- Parameters:
key- FIXMEalias1- FIXMEalias- FIXME
-
getKeyAlias
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
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
Retourne la liste d'alias associee avec une cleK1: 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
Retire une cle ainsi que tous ses aliasK1: a, b, c K2: b, c, d K3: c, d, e remove(K1) il reste K2: [b, c, d], K3: [c, d, e]
-
removeValue
Supprime toutes les valeurs et leur cle associe aux aliasK1: 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
Supprime des alias quelque soit leur cleK1: 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
-