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.