Class UnmodifiableBidiMap

All Implemented Interfaces:
Map, BidiMap, IterableMap, Unmodifiable

public final class UnmodifiableBidiMap extends AbstractBidiMapDecorator implements Unmodifiable
Decorates another BidiMap to ensure it can't be altered.
Since:
Commons Collections 3.0
Version:
$Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
Author:
Stephen Colebourne
  • Method Details

    • decorate

      public static BidiMap decorate(BidiMap map)
      Factory method to create an unmodifiable map.

      If the map passed in is already unmodifiable, it is returned.

      Parameters:
      map - the map to decorate, must not be null
      Returns:
      an unmodifiable BidiMap
      Throws:
      IllegalArgumentException - if map is null
    • clear

      public void clear()
      Specified by:
      clear in interface Map
      Overrides:
      clear in class AbstractMapDecorator
    • put

      public Object put(Object key, Object value)
      Description copied from interface: BidiMap
      Puts the key-value pair into the map, replacing any previous pair.

      When adding a key-value pair, the value may already exist in the map against a different key. That mapping is removed, to ensure that the value only occurs once in the inverse map.

        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
       
      Specified by:
      put in interface BidiMap
      Specified by:
      put in interface Map
      Overrides:
      put in class AbstractMapDecorator
      Parameters:
      key - the key to store
      value - the value to store
      Returns:
      the previous value mapped to this key
    • putAll

      public void putAll(Map mapToCopy)
      Specified by:
      putAll in interface Map
      Overrides:
      putAll in class AbstractMapDecorator
    • remove

      public Object remove(Object key)
      Specified by:
      remove in interface Map
      Overrides:
      remove in class AbstractMapDecorator
    • entrySet

      public Set entrySet()
      Specified by:
      entrySet in interface Map
      Overrides:
      entrySet in class AbstractMapDecorator
    • keySet

      public Set keySet()
      Specified by:
      keySet in interface Map
      Overrides:
      keySet in class AbstractMapDecorator
    • values

      public Collection values()
      Specified by:
      values in interface Map
      Overrides:
      values in class AbstractMapDecorator
    • removeValue

      public Object removeValue(Object value)
      Description copied from interface: BidiMap
      Removes the key-value pair that is currently mapped to the specified value (optional operation).

      If the value is not contained in the map, null is returned.

      Implementations should seek to make this method perform equally as well as remove(Object).

      Specified by:
      removeValue in interface BidiMap
      Overrides:
      removeValue in class AbstractBidiMapDecorator
      Parameters:
      value - the value to find the key-value pair for
      Returns:
      the key that was removed, null if nothing removed
    • mapIterator

      public MapIterator mapIterator()
      Description copied from interface: BidiMap
      Obtains a 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");
       }
       
      Specified by:
      mapIterator in interface BidiMap
      Specified by:
      mapIterator in interface IterableMap
      Overrides:
      mapIterator in class AbstractBidiMapDecorator
      Returns:
      a map iterator
    • inverseBidiMap

      public BidiMap inverseBidiMap()
      Description copied from interface: BidiMap
      Gets a view of this map where the keys and values are reversed.

      Changes to one map will be visible in the other and vice versa. This enables both directions of the map to be accessed as a 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.

      Specified by:
      inverseBidiMap in interface BidiMap
      Overrides:
      inverseBidiMap in class AbstractBidiMapDecorator
      Returns:
      an inverted bidirectional map