As we now, there is the concept of BiMap and multiMap but is there a multiBiMap ? so what do I mean by this. In multiMap you have one-to-many relationship between K and V,
import java.util.Set;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
public class ManyToMany {
private final SetMultimap keysToValues = HashMultimap.create();
private final SetMultimap valuesToKeys = HashMultimap.create();
public Set getValues(K key) {
return keysToValues.get(key);
}
public Set 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);
}
return changed;
}
}