Package org.jvnet.hk2.component
Class MultiMap<K,V>
- java.lang.Object
-
- org.jvnet.hk2.component.MultiMap<K,V>
-
- Type Parameters:
K- The key of the multi-mapV- The types in the multi-map
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable
public class MultiMap<K,V> extends java.lang.Object implements java.io.Serializable, java.lang.CloneableMap from a key to multiple values. Order is significant among values, and null values are allowed, although null keys are not.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringNEWLINEprivate static longserialVersionUIDFor serializationprivate java.util.Map<K,java.util.List<V>>store
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.util.List<V>_get(K k)Package private (for getting the raw map for direct manipulation by the habitat)voidadd(K k, V v)Adds one more key-value pair.MultiMap<K,V>clone()Creates a copy of the map that contains the exact same key and value set.booleancontains(K k1, V k2)Checks if the map contains the given key(s), also extending the search to including the sub collection.booleancontainsKey(K k)Checks if the map contains the given key.java.util.Set<java.util.Map.Entry<K,java.util.List<V>>>entrySet()Lists up all entries.booleanequals(java.lang.Object another)java.util.List<V>get(K k)Returns the elements indexed by the provided keyprivate VgetFirst(K k)VgetOne(K k)Gets the first value if any, or null.inthashCode()java.util.Set<K>keySet()Returns the set of keys associated with this MultiMapvoidmergeAll(MultiMap<K,V> another)This method merges all of the keys and values from another MultiMap into this MultiMap.private java.util.List<V>newList(java.util.Collection<? extends V> initialVals)Creates an optionally populated list to be used as an entry in the map.java.util.List<V>remove(K key)Removes an key value from the mapbooleanremove(K key, V entry)Removes an key value pair from the map.voidset(K k, java.util.Collection<? extends V> v)Replaces all the existing values associated with the key by the given value.voidset(K k, V v)Replaces all the existing values associated with the key by the given single value.intsize()Returns the size of the map.java.lang.StringtoCommaSeparatedString()java.lang.StringtoString()
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
For serialization- See Also:
- Constant Field Values
-
NEWLINE
private static final java.lang.String NEWLINE
-
-
Method Detail
-
newList
private java.util.List<V> newList(java.util.Collection<? extends V> initialVals)
Creates an optionally populated list to be used as an entry in the map.- Parameters:
initialVal-- Returns:
-
keySet
public java.util.Set<K> keySet()
Returns the set of keys associated with this MultiMap- Returns:
- The set of keys currently available in this MultiMap. Will not return null, but may return a Set of lenght zero
-
add
public final void add(K k, V v)
Adds one more key-value pair.- Parameters:
k- key to store the entry underv- value to store in the k's values.
-
set
public void set(K k, java.util.Collection<? extends V> v)
Replaces all the existing values associated with the key by the given value. If v is empty the key k will be removed from the MultiMap.- Parameters:
k- key for the valuesv- Can be null or empty.
-
set
public void set(K k, V v)
Replaces all the existing values associated with the key by the given single value.- Parameters:
k- key for the valuesv- singleton value for k key This is short for set(k,Collections.singleton(v))
-
get
public final java.util.List<V> get(K k)
Returns the elements indexed by the provided key- Parameters:
k- key for the values- Returns:
- Can be empty but never null. Read-only.
-
mergeAll
public void mergeAll(MultiMap<K,V> another)
This method merges all of the keys and values from another MultiMap into this MultiMap. If a key/value pair is found in both MultiMaps it is not re-added to this MultiMap, but is instead discarded- Parameters:
another- The MultiMap from which to add values to this MultiMap. If null this method does nothing
-
_get
private final java.util.List<V> _get(K k)
Package private (for getting the raw map for direct manipulation by the habitat)- Parameters:
k- the key- Returns:
-
containsKey
public boolean containsKey(K k)
Checks if the map contains the given key.- Parameters:
k- key to test- Returns:
- true if the map contains at least one element for this key
-
contains
public boolean contains(K k1, V k2)
Checks if the map contains the given key(s), also extending the search to including the sub collection.- Parameters:
k1- key from top collectionk2- key (value) from inner collection- Returns:
- true if the map contains at least one element for these keys
-
remove
public java.util.List<V> remove(K key)
Removes an key value from the map- Parameters:
key- key to be removed- Returns:
- the value stored under this key or null if there was none
-
remove
public boolean remove(K key, V entry)
Removes an key value pair from the map. If the list of entries for that key is empty after the remove it will be removed from the set of keys- Parameters:
key- key to be removedentry- the entry to be removed from the key'ed list- Returns:
- true if there was none that was deleted
-
getOne
public V getOne(K k)
Gets the first value if any, or null. This is useful when you know the given key only has one value and you'd like to get to that value.- Parameters:
k- key for the values- Returns:
- null if the key has no values or it has a value but the value is null.
-
entrySet
public java.util.Set<java.util.Map.Entry<K,java.util.List<V>>> entrySet()
Lists up all entries.- Returns:
- a
SetofMap.Entryof entries
-
toCommaSeparatedString
public java.lang.String toCommaSeparatedString()
- Returns:
- the map as "key=value1,key=value2,...."
-
clone
public MultiMap<K,V> clone() throws java.lang.CloneNotSupportedException
Creates a copy of the map that contains the exact same key and value set. Keys and values won't cloned.- Overrides:
clonein classjava.lang.Object- Throws:
java.lang.CloneNotSupportedException
-
size
public int size()
Returns the size of the map. This returns the numbers of keys in the map, not the number of values- Returns:
- integer or 0 if the map is empty
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object another)
- Overrides:
equalsin classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-