org.jvnet.hk2.component
Class MultiMap<K,V>

java.lang.Object
  extended by org.jvnet.hk2.component.MultiMap<K,V>
All Implemented Interfaces:
java.io.Serializable

public class MultiMap<K,V>
extends java.lang.Object
implements java.io.Serializable

Map from a key to multiple values. Order is significant among values, and null values are allowed, although null keys are not.

Author:
Kohsuke Kawaguchi, Jerome Dochez
See Also:
Serialized Form

Constructor Summary
  MultiMap()
          Creates an empty multi-map with default concurrency controls
protected MultiMap(java.util.Map<K,java.util.List<V>> store, boolean concurrencyControls)
          Creates a multi-map backed by the given store.
  MultiMap(MultiMap<K,V> base)
          Copy constructor.
 
Method Summary
 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.
static
<K,V> MultiMap<K,V>
emptyMap()
          Gets the singleton read-only empty multi-map.
 java.util.Set<java.util.Map.Entry<K,java.util.List<V>>> entrySet()
          Lists up all entries.
 java.util.List<V> get(K k)
          Returns the elements indexed by the provided key
 V getOne(K k)
          Gets the first value if any, or null.
 java.util.Set<K> keySet()
           
protected  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 map
 boolean 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()
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MultiMap

public MultiMap()
Creates an empty multi-map with default concurrency controls


MultiMap

protected MultiMap(java.util.Map<K,java.util.List<V>> store,
                   boolean concurrencyControls)
Creates a multi-map backed by the given store.

Parameters:
store - map to copy

MultiMap

public MultiMap(MultiMap<K,V> base)
Copy constructor.

Parameters:
base - map to copy
Method Detail

toString

public final java.lang.String toString()
Overrides:
toString in class java.lang.Object

newList

protected 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()

add

public final void add(K k,
                      V v)
Adds one more key-value pair.

Parameters:
k - key to store the entry under
v - 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.

Parameters:
k - key for the values
v - 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 values
v - 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.

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 collection
k2 - 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

Parameters:
key - key to be removed
entry - the entry to be removed from the key'ed list
Returns:
true if there was none that was deleted

getOne

public final 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 of Map.Entry of entries

toCommaSeparatedString

public java.lang.String toCommaSeparatedString()
Returns:
the map as "key=value1,key=value2,...."

clone

public MultiMap<K,V> clone()
Creates a copy of the map that contains the exact same key and value set. Keys and values won't cloned.

Overrides:
clone in class java.lang.Object

size

public int size()
Returns the size of the map

Returns:
integer or 0 if the map is empty

emptyMap

public static <K,V> MultiMap<K,V> emptyMap()
Gets the singleton read-only empty multi-map.

Returns:
an empty map
See Also:
Collections.emptyMap()


Copyright © 2011 Oracle Corporation. All Rights Reserved.