Class GenericInvertibleMultiMap<K,V>

java.lang.Object
net.cscott.jutil.GenericInvertibleMultiMap<K,V>
All Implemented Interfaces:
Map<K,V>, InvertibleMap<K,V>, InvertibleMultiMap<K,V>, MultiMap<K,V>

public class GenericInvertibleMultiMap<K,V> extends Object implements InvertibleMultiMap<K,V>
GenericInvertibleMultiMap is a default implementation of InvertibleMultiMap. It returns modifiable inverted views of the mappings it maintains. Note that a GenericInvertibleMultiMap can directly replace a GenericInvertibleMap, because MultiMap correctly extends Map.
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>
  • Constructor Details

    • GenericInvertibleMultiMap

      public GenericInvertibleMultiMap(MultiMapFactory<?,?> mmf)
    • GenericInvertibleMultiMap

      public GenericInvertibleMultiMap(MapFactory<?,?> mf, CollectionFactory<?> cf)
    • GenericInvertibleMultiMap

      public GenericInvertibleMultiMap(CollectionFactory<?> cf)
    • GenericInvertibleMultiMap

      public GenericInvertibleMultiMap()
    • GenericInvertibleMultiMap

      public GenericInvertibleMultiMap(Map<? extends K,? extends V> m)
    • GenericInvertibleMultiMap

      public GenericInvertibleMultiMap(MultiMap<? extends K,? extends V> mm)
  • Method Details

    • invert

      public InvertibleMultiMap<V,K> invert()
      Returns an unmodifiable inverted view of this.
      Specified by:
      invert in interface InvertibleMap<K,V>
      Specified by:
      invert in interface InvertibleMultiMap<K,V>
    • add

      public boolean add(K key, V value)
      Description copied from interface: MultiMap
      Ensures that this contains an association from key to value. (MultiMap specific operation).
      Specified by:
      add in interface MultiMap<K,V>
      Returns:
      true if this mapping changed as a result of the call
    • addAll

      public boolean addAll(K key, Collection<? extends V> values)
      Description copied from interface: MultiMap
      Adds to the current mappings: associations for key to each value in values. (MultiMap specific operation).
      Specified by:
      addAll in interface MultiMap<K,V>
      Returns:
      true if this mapping changed as a result of the call
    • addAll

      public boolean addAll(MultiMap<? extends K,? extends V> mm)
      Description copied from interface: MultiMap
      Adds all mappings in the given multimap to this multimap.
      Specified by:
      addAll in interface MultiMap<K,V>
    • clear

      public void clear()
      Specified by:
      clear in interface Map<K,V>
    • contains

      public boolean contains(Object a, Object b)
      Description copied from interface: MultiMap
      Returns true if a has a mapping to b in this. (MultiMap specific operation).
      Specified by:
      contains in interface MultiMap<K,V>
    • containsKey

      public boolean containsKey(Object key)
      Specified by:
      containsKey in interface Map<K,V>
    • containsValue

      public boolean containsValue(Object value)
      Specified by:
      containsValue in interface Map<K,V>
    • entrySet

      public MultiMapSet<K,V> entrySet()
      The Set returned by this method is actually an instance of MultiMapSet.
      Specified by:
      entrySet in interface Map<K,V>
      Specified by:
      entrySet in interface MultiMap<K,V>
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in interface Map<K,V>
      Overrides:
      equals in class Object
    • get

      public V get(Object key)
      Description copied from interface: MultiMap
      Returns some arbitrary value from the collection of values to which this map maps the specified key. Returns null if the map contains no mapping for the key; it's also possible that the map explicitly maps the key to null. The containsKey operation may be used to distinquish these two cases. Note that if only the put method is used to modify this, then get will operate just as it would in any other Map.
      Specified by:
      get in interface Map<K,V>
      Specified by:
      get in interface MultiMap<K,V>
    • getValues

      public Collection<V> getValues(K key)
      Description copied from interface: MultiMap
      Returns the collection of Values associated with key. Modifications to the returned Collection affect this as well. If there are no Values currently associated with key, constructs a new, potentially mutable, empty Collection and returns it. (MultiMap specific operation).
      Specified by:
      getValues in interface MultiMap<K,V>
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Map<K,V>
      Overrides:
      hashCode in class Object
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map<K,V>
    • keySet

      public Set<K> keySet()
      Specified by:
      keySet in interface Map<K,V>
    • put

      public V put(K key, V value)
      Description copied from interface: MultiMap
      Associates the specified value with the specified key in this map, after removing all old values associated with the key. Returns some value that was previously associated with the specified key, or null if no values were associated previously.
      Specified by:
      put in interface Map<K,V>
      Specified by:
      put in interface MultiMap<K,V>
    • putAll

      public void putAll(Map<? extends K,? extends V> t)
      Description copied from interface: MultiMap
      Copies the mappings from the specified map to this map, after removing all old values associated with the key. Note that putAll(mm) where mm is a MultiMap will NOT add all of the mappings in mm; it will only add all of the Keys in mm, mapping each Key to one of the Values it mapped to in mm. To add all of the mappings from another MultiMap, use MultiMap.addAll(MultiMap).
      Specified by:
      putAll in interface Map<K,V>
      Specified by:
      putAll in interface MultiMap<K,V>
    • remove

      public V remove(Object key)
      Description copied from interface: MultiMap
      Removes mappings from key to all associated values from this map. This is consistent with the Map definition of remove.
      Specified by:
      remove in interface Map<K,V>
      Specified by:
      remove in interface MultiMap<K,V>
      Returns:
      one of the previous values associated with the key, or null if Map associated no values with the key. Note that a zero-sized collection is not returned in the latter case, and that a null return value may be ambiguous if the map associated null with the given key (in addition to possibly other values).
    • remove

      public boolean remove(Object key, Object value)
      Description copied from interface: MultiMap
      Removes a mapping from key to value from this map if present. (MultiMap specific operation). Note that if multiple mappings from key to value are permitted by this map, then only one is guaranteed to be removed. Returns true if this was modified as a result of this operation, else returns false.
      Specified by:
      remove in interface Map<K,V>
      Specified by:
      remove in interface MultiMap<K,V>
    • removeAll

      public boolean removeAll(K key, Collection<?> values)
      Description copied from interface: MultiMap
      Removes from the current mappings: associations for key to any value in values. (MultiMap specific operation).
      Specified by:
      removeAll in interface MultiMap<K,V>
      Returns:
      true if this mapping changed as a result of the call
    • retainAll

      public boolean retainAll(K key, Collection<?> values)
      Description copied from interface: MultiMap
      Removes from the current mappings: associations for key to any value not in values. (MultiMap specific operation).
      Specified by:
      retainAll in interface MultiMap<K,V>
      Returns:
      true if this mapping changed as a result of the call
    • size

      public int size()
      Description copied from interface: MultiMap
      Returns the number of key-value mappings in this map (keys which map to multiple values count multiple times).
      Specified by:
      size in interface Map<K,V>
      Specified by:
      size in interface MultiMap<K,V>
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • values

      public Collection<V> values()
      Specified by:
      values in interface Map<K,V>