java hashmap multimap bimap

java - ¿Tenemos un MultiBiMap?



hashmap multimap (1)

import java.util.Set; import com.google.common.collect.HashMultimap; import com.google.common.collect.SetMultimap; public class ManyToMany<K, V> { private final SetMultimap<K, V> keysToValues = HashMultimap.create(); private final SetMultimap<V, K> valuesToKeys = HashMultimap.create(); public Set<V> getValues(K key) { return keysToValues.get(key); } public Set<K> getKeys(V value) { return valuesToKeys.get(value); } public boolean put(K key, V value) { return keysToValues.put(key, value) && valuesToKeys.put(value, key); } public boolean putAll(K key, Iterable<? extends V> values) { boolean changed = false; for (V value : values) { changed = put(key, value) || changed; } return changed; } }

Como ahora, existe el concepto de BiMap y multiMap, pero ¿hay un multiBiMap? Entonces, ¿qué quiero decir con esto? En multiMap tiene una relación uno a muchos entre K y V, una sola clave puede asociarse a múltiples valores, de ahí el nombre. En el mapa bi tiene K, V par que es bidireccional significa que puede obtener V, K relación también. Como tener dos mapas regulares pero sincronizados. Necesito un multi mapa bidireccional donde combine estos dos conceptos.