| 
 | JUtil | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjava.util.AbstractMap<K,V>
net.cscott.jutil.AbstractMultiMap<K,V>
net.cscott.jutil.GenericMultiMap<K,V>
public class GenericMultiMap<K,V>
GenericMultiMap is a default implementation of a
 MultiMap.  
 
FSK: right now the implementation tries to preserve the property that if a key 'k' maps to an empty collection 'c' in some MultiMap 'mm', then users of 'mm' will not be able to see that 'k' is a member of the keySet for 'mm'. However, it does not preserve this property when mm.getValues(k) is used as a means to operate on the state of 'mm', and it is not clear to me whether one can even ensure that the property can be maintained if arbitrary operations on mm.getValues(k) are passed on to 'mm'.
| Nested Class Summary | 
|---|
| Nested classes/interfaces inherited from class java.util.AbstractMap | 
|---|
| AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V> | 
| Nested classes/interfaces inherited from interface java.util.Map | 
|---|
| Map.Entry<K,V> | 
| Constructor Summary | |
|---|---|
| GenericMultiMap()Creates a MultiMapusing aHashMapfor
        the map andHashSets for the value collections. | |
| GenericMultiMap(CollectionFactory<V> cf)Creates a MultiMapusing aHashMapfor
  the map and the specifiedCollectionFactoryto
  create the value collections. | |
| GenericMultiMap(MapFactory<K,Collection<V>> mf,
                CollectionFactory<V> cf)Creates a MultiMapusing the specifiedMapFactoryto create the map and the specifiedCollectionFactoryto create the value collections. | |
| Method Summary | |
|---|---|
|  void | clear() | 
|  boolean | contains(Object a,
         Object b)Returns true if ahas a mapping tobinthis. | 
|  boolean | containsKey(Object key) | 
|  boolean | containsValue(Object value) | 
|  MultiMapSet<K,V> | entrySet()Returns a set view of the mappings contained in this map. | 
|  V | get(Object key)Returns some arbitrary value from the set of values to which this map maps the specified key. | 
|  Collection<V> | getValues(K key)Returns the collection of Values associated with key. | 
|  boolean | isEmpty() | 
|  Set<K> | keySet()Returns a set view of the keys in this map. | 
|  V | remove(Object key)Removes all mappings for this key from this map if present. | 
|  boolean | remove(Object key,
       Object value)Removes a mapping from key to value from this map if present. | 
|  int | size()Returns the number of key-value mappings in this map (keys which map to multiple values count multiple times). | 
|  Collection<V> | values()Returns a collection view of the values contained in this map. | 
| Methods inherited from class net.cscott.jutil.AbstractMultiMap | 
|---|
| add, addAll, addAll, equals, hashCode, put, putAll, removeAll, retainAll, toString | 
| Methods inherited from class java.util.AbstractMap | 
|---|
| clone | 
| Methods inherited from class java.lang.Object | 
|---|
| finalize, getClass, notify, notifyAll, wait, wait, wait | 
| Constructor Detail | 
|---|
public GenericMultiMap()
MultiMap using a HashMap for
        the map and HashSets for the value collections.
        To gain more control over the specific sets/map used in
        internal representation of this, use the more
        specific constructor 
        that takes CollectionFactorys.
public GenericMultiMap(CollectionFactory<V> cf)
MultiMap using a HashMap for
  the map and the specified CollectionFactory to
  create the value collections.
public GenericMultiMap(MapFactory<K,Collection<V>> mf,
                       CollectionFactory<V> cf)
MultiMap using the specified
  MapFactory to create the map and the specified
  CollectionFactory to create the value collections.
| Method Detail | 
|---|
public int size()
MultiMap
size in interface Map<K,V>size in interface MultiMap<K,V>size in class AbstractMultiMap<K,V>public boolean isEmpty()
isEmpty in interface Map<K,V>isEmpty in class AbstractMultiMap<K,V>public boolean containsKey(Object key)
containsKey in interface Map<K,V>containsKey in class AbstractMultiMap<K,V>public boolean containsValue(Object value)
containsValue in interface Map<K,V>containsValue in class AbstractMultiMap<K,V>public V get(Object key)
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.
get in interface Map<K,V>get in interface MultiMap<K,V>get in class AbstractMultiMap<K,V>public V remove(Object key)
null if there was no mapping for key.
remove in interface Map<K,V>remove in interface MultiMap<K,V>remove in class AbstractMultiMap<K,V>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).
public boolean remove(Object key,
                      Object value)
this was modified as a result of
        this operation, else returns false.
remove in interface MultiMap<K,V>remove in class AbstractMultiMap<K,V>public void clear()
clear in interface Map<K,V>clear in class AbstractMultiMap<K,V>public Collection<V> getValues(K key)
key.  Modifications to the returned
        Collection affect this as well.  If 
        there are no Values currently associated with
        key, constructs a new, mutable, empty
        Collection and returns it.
        (MultiMap specific operation).
getValues in interface MultiMap<K,V>getValues in class AbstractMultiMap<K,V>
public boolean contains(Object a,
                        Object b)
a has a mapping to b
        in this.
        (MultiMap specific operation).
contains in interface MultiMap<K,V>contains in class AbstractMultiMap<K,V>public Set<K> keySet()
keySet in interface Map<K,V>keySet in class AbstractMap<K,V>public Collection<V> values()
values in interface Map<K,V>values in class AbstractMap<K,V>public MultiMapSet<K,V> entrySet()
Map.Entrys.  The returned set is actually a
        MultiMapSet, from which you can get back the
        original MultiMap.
entrySet in interface Map<K,V>entrySet in interface MultiMap<K,V>entrySet in class AbstractMultiMap<K,V>| 
 | JUtil | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||