javax.ws.rs.core
Class MultivaluedHashMap<K,V>

java.lang.Object
  extended by java.util.AbstractMap<K,V>
      extended by java.util.HashMap<K,java.util.List<V>>
          extended by javax.ws.rs.core.MultivaluedHashMap<K,V>
Type Parameters:
K - the type of keys maintained by this map
V - the type of mapped values
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.util.Map<K,java.util.List<V>>, MultivaluedMap<K,V>

public class MultivaluedHashMap<K,V>
extends java.util.HashMap<K,java.util.List<V>>
implements MultivaluedMap<K,V>

An implementation of MultivaluedMap on top of a HashMap.

Since:
2.0
Author:
Paul Sandoz, Marek Potociar
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class java.util.AbstractMap
java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>
 
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K,V>
 
Constructor Summary
MultivaluedHashMap()
          Constructs an empty multivalued hash map with initial capacity and load factor set to HashMap defaults.
MultivaluedHashMap(int initialCapacity)
          Constructs an empty multivalued hash map with the specified initial capacity and the default load factor.
MultivaluedHashMap(int initialCapacity, float loadFactor)
          Constructs an empty multivalued hash map with the specified initial capacity and load factor.
MultivaluedHashMap(java.util.Map<? extends K,? extends V> map)
          Constructs a new multivalued hash map with the same mappings as the specified single-valued Map.
MultivaluedHashMap(MultivaluedMap<? extends K,? extends V> map)
          Constructs a new multivalued hash map with the same mappings as the specified MultivaluedMap.
 
Method Summary
 void add(K key, V value)
          Add a value to the current list of values for the supplied key.
 void addAll(K key, java.util.List<V> valueList)
          Add all the values from the supplied value list to the current list of values for the supplied key.
 void addAll(K key, V... newValues)
          Add multiple values to the current list of values for the supplied key.
 void addFirst(K key, V value)
          Add a value to the first position in the current list of values for the supplied key.
protected  void addFirstNull(java.util.List<V> values)
          Define the behavior for adding a null values to the first position in the value list.
protected  void addNull(java.util.List<V> values)
          Define the behavior for adding a null values to the value list.
 V getFirst(K key)
          A shortcut to get the first value of the supplied key.
protected  java.util.List<V> getValues(K key)
          Return a non-null list of values for a given key.
 void putSingle(K key, V value)
          Set the value for the key to be a one item list consisting of the supplied value.
 
Methods inherited from class java.util.HashMap
clear, clone, containsKey, containsValue, entrySet, get, isEmpty, keySet, put, putAll, remove, size, values
 
Methods inherited from class java.util.AbstractMap
equals, hashCode, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values
 

Constructor Detail

MultivaluedHashMap

public MultivaluedHashMap()
Constructs an empty multivalued hash map with initial capacity and load factor set to HashMap defaults.

See Also:
HashMap.HashMap()

MultivaluedHashMap

public MultivaluedHashMap(int initialCapacity)
Constructs an empty multivalued hash map with the specified initial capacity and the default load factor.

Parameters:
initialCapacity - the initial capacity.
Throws:
java.lang.IllegalArgumentException - if the initial capacity is negative.
See Also:
HashMap.HashMap(int)

MultivaluedHashMap

public MultivaluedHashMap(int initialCapacity,
                          float loadFactor)
Constructs an empty multivalued hash map with the specified initial capacity and load factor.

Parameters:
initialCapacity - the initial capacity
loadFactor - the load factor
Throws:
java.lang.IllegalArgumentException - if the initial capacity is negative or the load factor is nonpositive
See Also:
HashMap.HashMap(int, float)

MultivaluedHashMap

public MultivaluedHashMap(MultivaluedMap<? extends K,? extends V> map)
Constructs a new multivalued hash map with the same mappings as the specified MultivaluedMap. The List instances holding the values of each key are created anew instead of being reused.

Parameters:
map - the multivalued map whose mappings are to be placed in this multivalued map.
Throws:
java.lang.NullPointerException - if the specified map is null

MultivaluedHashMap

public MultivaluedHashMap(java.util.Map<? extends K,? extends V> map)
Constructs a new multivalued hash map with the same mappings as the specified single-valued Map.

Parameters:
map - the single-valued map whose mappings are to be placed in this multivalued map.
Throws:
java.lang.NullPointerException - if the specified map is null
Method Detail

putSingle

public final void putSingle(K key,
                            V value)
Set the value for the key to be a one item list consisting of the supplied value. Any existing values will be replaced.

NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the purged value list. As a result of such operation, empty value list would be registered for the supplied key. Overriding implementations may modify this behavior by redefining the addNull(java.util.List) method.

Specified by:
putSingle in interface MultivaluedMap<K,V>
Parameters:
key - the key
value - the single value of the key. If the value is null it will be ignored.

addNull

protected void addNull(java.util.List<V> values)
Define the behavior for adding a null values to the value list.

Default implementation is a no-op, i.e. the null values are ignored. Overriding implementations may modify this behavior by providing their own definitions of this method.

Parameters:
values - value list where the null value addition is being requested.

addFirstNull

protected void addFirstNull(java.util.List<V> values)
Define the behavior for adding a null values to the first position in the value list.

Default implementation is a no-op, i.e. the null values are ignored. Overriding implementations may modify this behavior by providing their own definitions of this method.

Parameters:
values - value list where the null value addition is being requested.

add

public final void add(K key,
                      V value)
Description copied from interface: MultivaluedMap
Add a value to the current list of values for the supplied key.

Specified by:
add in interface MultivaluedMap<K,V>
Parameters:
key - the key
value - the value to be added.

addAll

public final void addAll(K key,
                         V... newValues)
Add multiple values to the current list of values for the supplied key. If the supplied array of new values is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null.

NOTE: This implementation ignores null values; Any of the supplied values of null is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the addNull(java.util.List) method.

Parameters:
key - the key.
newValues - the values to be added.
Throws:
java.lang.NullPointerException - if the supplied array of new values is null.

addAll

public final void addAll(K key,
                         java.util.List<V> valueList)
Add all the values from the supplied value list to the current list of values for the supplied key. If the supplied value list is empty, method returns immediately. Method throws a NullPointerException if the supplied array of values is null.

NOTE: This implementation ignores null values; Any null value in the supplied value list is ignored and not added to the value list. Overriding implementations may modify this behavior by redefining the addNull(java.util.List) method.

Parameters:
key - the key.
valueList - the list of values to be added.
Throws:
java.lang.NullPointerException - if the supplied value list is null.

getFirst

public final V getFirst(K key)
Description copied from interface: MultivaluedMap
A shortcut to get the first value of the supplied key.

Specified by:
getFirst in interface MultivaluedMap<K,V>
Parameters:
key - the key
Returns:
the first value for the specified key or null if the key is not in the map.

addFirst

public final void addFirst(K key,
                           V value)
Add a value to the first position in the current list of values for the supplied key.

NOTE: This implementation ignores null values; A supplied value of null is ignored and not added to the purged value list. Overriding implementations may modify this behavior by redefining the addFirstNull(java.util.List) method.

Parameters:
key - the key
value - the value to be added.

getValues

protected final java.util.List<V> getValues(K key)
Return a non-null list of values for a given key. The returned list may be empty.

If there is no entry for the key in the map, a new empty List instance is created, registered within the map to hold the values of the key and returned from the method.

Parameters:
key - the key.
Returns:
value list registered with the key. The method is guaranteed to never return null.


Copyright © 2007-2012 Oracle Corporation. All Rights Reserved. Use is subject to license terms.