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.Cloneable
Map 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.String
NEWLINE
private static long
serialVersionUID
For 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)void
add(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.boolean
contains(K k1, V k2)
Checks if the map contains the given key(s), also extending the search to including the sub collection.boolean
containsKey(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.boolean
equals(java.lang.Object another)
java.util.List<V>
get(K k)
Returns the elements indexed by the provided keyprivate V
getFirst(K k)
V
getOne(K k)
Gets the first value if any, or null.int
hashCode()
java.util.Set<K>
keySet()
Returns the set of keys associated with this MultiMapvoid
mergeAll(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 mapboolean
remove(K key, V entry)
Removes an key value pair from the map.void
set(K k, java.util.Collection<? extends V> v)
Replaces all the existing values associated with the key by the given value.void
set(K k, V v)
Replaces all the existing values associated with the key by the given single value.int
size()
Returns the size of the map.java.lang.String
toCommaSeparatedString()
java.lang.String
toString()
-
-
-
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
Set
ofMap.Entry
of 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:
clone
in 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:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object another)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-