|
||||||||||
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 |
---|
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 Map<K,V>
key
- the key to storevalue
- the value to store
UnsupportedOperationException
- if the put
method is not supported
ClassCastException
- (optional) if the map limits the type of the
value and the specified value is inappropriate
IllegalArgumentException
- (optional) if the map limits the values
in some way and the value was invalid
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
ClassCastException
- (optional) if the map limits the type of the
value and the specified value is inappropriate
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
ClassCastException
- (optional) if the map limits the type of the
value and the specified value is inappropriate
NullPointerException
- (optional) if the map limits the values to
non-null and null was specified
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 |