|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface BidiMap<K,V>
Defines a map that allows bidirectional lookup between key and values.
This extendedMap
represents a mapping where a key may lookup a
value and a value may lookup a key with equal ease. This interface extends
Map
and so may be used anywhere a map is required. The interface
provides an inverse map view, enabling full access to both directions of the
BidiMap
.
Implementations should allow a value to be looked up from a key and a key to
be looked up from a value with equal performance.
This map enforces the restriction that there is a 1:1 relation between keys
and values, meaning that multiple keys cannot map to the same value. This is
required so that "inverting" the map results in a map without duplicate keys.
See the put(K, V)
method description for more information.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface java.util.Map |
---|
java.util.Map.Entry<K,V> |
Method Summary | |
---|---|
K |
getKey(V value)
Gets the key that is currently mapped to the specified value. |
BidiMap<V,K> |
inverseBidiMap()
Gets a view of this map where the keys and values are reversed. |
MapIterator<K,V> |
mapIterator()
Obtains a MapIterator over the map. |
V |
put(K key,
V value)
Puts the key-value pair into the map, replacing any previous pair. |
K |
removeValue(V value)
Removes the key-value pair that is currently mapped to the specified value (optional operation). |
Methods inherited from interface java.util.Map |
---|
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, putAll, remove, size, values |
Method Detail |
---|
MapIterator<K,V> mapIterator()
MapIterator
over the map.
A map iterator is an efficient way of iterating over maps. It does not
require that the map is stored using Map Entry objects which can increase
performance.
BidiMap map = new DualHashBidiMap(); MapIterator it = map.mapIterator(); while (it.hasNext()) { Object key = it.next(); Object value = it.getValue(); it.setValue("newValue"); }
mapIterator
in interface IterableMap<K,V>
V put(K key, V value)
BidiMap map1 = new DualHashBidiMap(); map.put("A","B"); // contains A mapped to B, as per Map map.put("A","C"); // contains A mapped to C, as per Map BidiMap map2 = new DualHashBidiMap(); map.put("A","B"); // contains A mapped to B, as per Map map.put("C","B"); // contains C mapped to B, key A is removed
put
in interface java.util.Map<K,V>
key
- the key to storevalue
- the value to store
java.lang.UnsupportedOperationException
- if the put
method is
not supported
java.lang.ClassCastException
- (optional) if the map limits the
type of the value and the specified
value is inappropriate
java.lang.IllegalArgumentException
- (optional) if the map limits the
values in some way and the value
was invalid
java.lang.NullPointerException
- (optional) if the map limits the
values to non-null and null was
specifiedK getKey(V value)
null
is returned.
Implementations should seek to make this method perform equally as well
as get(Object)
.
value
- the value to find the key for
null
if not found
java.lang.ClassCastException
- (optional) if the map limits the type of the
value and the specified value is
inappropriate
java.lang.NullPointerException
- (optional) if the map limits the values to
non-null and null was specifiedK removeValue(V value)
null
is returned.
Implementations should seek to make this method perform equally as well
as remove(Object)
.
value
- the value to find the key-value pair for
null
if nothing removed
java.lang.ClassCastException
- (optional) if the map limits the
type of the value and the specified
value is inappropriate
java.lang.NullPointerException
- (optional) if the map limits the
values to non-null and null was
specified
java.lang.UnsupportedOperationException
- if this method is not supported by
the implementationBidiMap<V,K> inverseBidiMap()
Map
.
Implementations should seek to avoid creating a new object every time
this method is called. See AbstractMap.values()
etc. Calling
this method on the inverse map should return the original.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |