org.jjoost.collections.bimaps
Class BiMap<K,V>

java.lang.Object
  extended by org.jjoost.collections.bimaps.AbstractBiMap<K,V,AnyMap<K,V>,AnyMap<V,K>>
      extended by org.jjoost.collections.bimaps.BiMap<K,V>
All Implemented Interfaces:
java.io.Serializable, AnyMap<K,V>, AnyReadMap<K,V>

public class BiMap<K,V>
extends AbstractBiMap<K,V,AnyMap<K,V>,AnyMap<V,K>>

See Also:
Serialized Form

Constructor Summary
BiMap(AnyMap<K,V> forwards, AnyMap<V,K> back)
           
 
Method Summary
 AnyMap<K,V> copy()
          Returns a copy of the map.
 AnySet<java.util.Map.Entry<K,V>> entries()
          Returns a set representing all the key->value pairs in this map.
 AnySet<K> keys()
          Returns a set representing all the keys in the domain of this map.
 AnySet<V> values(K key)
          Returns a set representing the values associated with the provided key in this map.
 
Methods inherited from class org.jjoost.collections.bimaps.AbstractBiMap
add, clear, clearAndReturn, contains, contains, count, count, entries, first, inverse, isEmpty, list, permitsDuplicateKeys, put, putIfAbsent, remove, remove, removeAndReturn, removeAndReturn, removeAndReturnFirst, shrink, totalCount, uniqueKeyCount, values
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BiMap

public BiMap(AnyMap<K,V> forwards,
             AnyMap<V,K> back)
Method Detail

copy

public AnyMap<K,V> copy()
Description copied from interface: AnyMap
Returns a copy of the map. Note that this method may not necessarily return an object of the same class as the one it is called upon, but will return one indistinguishable from it with respect to all method calls.

Returns:
the any map< k, v>

entries

public AnySet<java.util.Map.Entry<K,V>> entries()
Description copied from interface: AnyReadMap
Returns a set representing all the key->value pairs in this map. In a ListMap this will be a MultiSet. This set should always reflect changes to the map, and changes to the set should be reflected in the map also. Otherwise, this set should behave exactly as a regular set does.

Returns:
the entry set< k>

keys

public AnySet<K> keys()
Description copied from interface: AnyReadMap
Returns a set representing all the keys in the domain of this map. In a MultiMap or ListMap this will be a MultiSet. This set should always reflect changes to the map, and changes to the set should be reflected in the map also. Otherwise, this set should behave exactly as a regular set does. The key equality used by this map can be obtained from this set.

Depending on the implementation of map, this key set may contain every occurrence of equal keys provided to the map, or may contain a subset thereof with repetitions to bring the number of occurrences in line with the number provided.

Note that the put() methods on this set will always fail, because no value can be provided to update the map with.

Returns:
the key set< k>

values

public AnySet<V> values(K key)
Description copied from interface: AnyReadMap
Returns a set representing the values associated with the provided key in this map. This set should always reflect changes to the map, and changes to the set should be reflected in the map also. Otherwise, this set should behave exactly as a regular set does.

Note that in a regular (scalar) map the set returned will be a UnitarySet, which contains at most one value. put() operations on such a set will override any existing value regardless of if it is equal to the one already present.

Returns:
the set of values mapped to by provided key