org.springframework.util

Class LinkedMultiValueMap<K,V>

  • java.lang.Object
    • org.springframework.util.LinkedMultiValueMap<K,V>
  • Type Parameters:
    K - the key type
    V - the value element type
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map<K,java.util.List<V>>, MultiValueMap<K,V>


    public class LinkedMultiValueMap<K,V>
    extends java.lang.Object
    implements MultiValueMap<K,V>, java.io.Serializable, java.lang.Cloneable
    Simple implementation of MultiValueMap that wraps a LinkedHashMap, storing multiple values in a LinkedList.

    This Map implementation is generally not thread-safe. It is primarily designed for data structures exposed from request objects, for use in a single thread only.

    Since:
    3.0
    Author:
    Arjen Poutsma, Juergen Hoeller
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface java.util.Map

        java.util.Map.Entry<K,V>
    • Constructor Summary

      Constructors 
      Constructor and Description
      LinkedMultiValueMap()
      Create a new LinkedMultiValueMap that wraps a LinkedHashMap.
      LinkedMultiValueMap(int initialCapacity)
      Create a new LinkedMultiValueMap that wraps a LinkedHashMap with the given initial capacity.
      LinkedMultiValueMap(java.util.Map<K,java.util.List<V>> otherMap)
      Copy constructor: Create a new LinkedMultiValueMap with the same mappings as the specified Map.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      void add(K key, V value)
      Add the given single value to the current list of values for the given key.
      void addAll(K key, java.util.List<? extends V> values)
      Add all the values of the given list to the current list of values for the given key.
      void addAll(MultiValueMap<K,V> values)
      Add all the values of the given MultiValueMap to the current values.
      void clear() 
      LinkedMultiValueMap<K,V> clone()
      Create a regular copy of this Map.
      boolean containsKey(java.lang.Object key) 
      boolean containsValue(java.lang.Object value) 
      LinkedMultiValueMap<K,V> deepCopy()
      Create a deep copy of this Map.
      java.util.Set<java.util.Map.Entry<K,java.util.List<V>>> entrySet() 
      boolean equals(java.lang.Object obj) 
      java.util.List<V> get(java.lang.Object key) 
      V getFirst(K key)
      Return the first value for the given key.
      int hashCode() 
      boolean isEmpty() 
      java.util.Set<K> keySet() 
      java.util.List<V> put(K key, java.util.List<V> value) 
      void putAll(java.util.Map<? extends K,? extends java.util.List<V>> map) 
      java.util.List<V> remove(java.lang.Object key) 
      void set(K key, V value)
      Set the given single value under the given key.
      void setAll(java.util.Map<K,V> values)
      Set the given values under.
      int size() 
      java.util.Map<K,V> toSingleValueMap()
      Returns the first values contained in this MultiValueMap.
      java.lang.String toString() 
      java.util.Collection<java.util.List<V>> values() 
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Map

        compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
    • Constructor Detail

      • LinkedMultiValueMap

        public LinkedMultiValueMap()
        Create a new LinkedMultiValueMap that wraps a LinkedHashMap.
      • LinkedMultiValueMap

        public LinkedMultiValueMap(int initialCapacity)
        Create a new LinkedMultiValueMap that wraps a LinkedHashMap with the given initial capacity.
        Parameters:
        initialCapacity - the initial capacity
      • LinkedMultiValueMap

        public LinkedMultiValueMap(java.util.Map<K,java.util.List<V>> otherMap)
        Copy constructor: Create a new LinkedMultiValueMap with the same mappings as the specified Map. Note that this will be a shallow copy; its value-holding List entries will get reused and therefore cannot get modified independently.
        Parameters:
        otherMap - the Map whose mappings are to be placed in this Map
        See Also:
        clone(), deepCopy()
    • Method Detail

      • getFirst

        @Nullable
        public V getFirst(K key)
        Description copied from interface: MultiValueMap
        Return the first value for the given key.
        Specified by:
        getFirst in interface MultiValueMap<K,V>
        Parameters:
        key - the key
        Returns:
        the first value for the specified key, or null if none
      • add

        public void add(K key,
                        @Nullable
                        V value)
        Description copied from interface: MultiValueMap
        Add the given single value to the current list of values for the given key.
        Specified by:
        add in interface MultiValueMap<K,V>
        Parameters:
        key - the key
        value - the value to be added
      • addAll

        public void addAll(K key,
                           java.util.List<? extends V> values)
        Description copied from interface: MultiValueMap
        Add all the values of the given list to the current list of values for the given key.
        Specified by:
        addAll in interface MultiValueMap<K,V>
        Parameters:
        key - they key
        values - the values to be added
      • addAll

        public void addAll(MultiValueMap<K,V> values)
        Description copied from interface: MultiValueMap
        Add all the values of the given MultiValueMap to the current values.
        Specified by:
        addAll in interface MultiValueMap<K,V>
        Parameters:
        values - the values to be added
      • set

        public void set(K key,
                        @Nullable
                        V value)
        Description copied from interface: MultiValueMap
        Set the given single value under the given key.
        Specified by:
        set in interface MultiValueMap<K,V>
        Parameters:
        key - the key
        value - the value to set
      • setAll

        public void setAll(java.util.Map<K,V> values)
        Description copied from interface: MultiValueMap
        Set the given values under.
        Specified by:
        setAll in interface MultiValueMap<K,V>
        Parameters:
        values - the values.
      • toSingleValueMap

        public java.util.Map<K,V> toSingleValueMap()
        Description copied from interface: MultiValueMap
        Returns the first values contained in this MultiValueMap.
        Specified by:
        toSingleValueMap in interface MultiValueMap<K,V>
        Returns:
        a single value representation of this map
      • size

        public int size()
        Specified by:
        size in interface java.util.Map<K,java.util.List<V>>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Map<K,java.util.List<V>>
      • containsKey

        public boolean containsKey(java.lang.Object key)
        Specified by:
        containsKey in interface java.util.Map<K,java.util.List<V>>
      • containsValue

        public boolean containsValue(java.lang.Object value)
        Specified by:
        containsValue in interface java.util.Map<K,java.util.List<V>>
      • get

        @Nullable
        public java.util.List<V> get(java.lang.Object key)
        Specified by:
        get in interface java.util.Map<K,java.util.List<V>>
      • put

        @Nullable
        public java.util.List<V> put(K key,
                                               java.util.List<V> value)
        Specified by:
        put in interface java.util.Map<K,java.util.List<V>>
      • remove

        @Nullable
        public java.util.List<V> remove(java.lang.Object key)
        Specified by:
        remove in interface java.util.Map<K,java.util.List<V>>
      • putAll

        public void putAll(java.util.Map<? extends K,? extends java.util.List<V>> map)
        Specified by:
        putAll in interface java.util.Map<K,java.util.List<V>>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Map<K,java.util.List<V>>
      • keySet

        public java.util.Set<K> keySet()
        Specified by:
        keySet in interface java.util.Map<K,java.util.List<V>>
      • values

        public java.util.Collection<java.util.List<V>> values()
        Specified by:
        values in interface java.util.Map<K,java.util.List<V>>
      • entrySet

        public java.util.Set<java.util.Map.Entry<K,java.util.List<V>>> entrySet()
        Specified by:
        entrySet in interface java.util.Map<K,java.util.List<V>>
      • deepCopy

        public LinkedMultiValueMap<K,V> deepCopy()
        Create a deep copy of this Map.
        Returns:
        a copy of this Map, including a copy of each value-holding List entry (consistently using an independent modifiable LinkedList for each entry) along the lines of MultiValueMap.addAll semantics
        Since:
        4.2
        See Also:
        addAll(MultiValueMap), clone()
      • equals

        public boolean equals(java.lang.Object obj)
        Specified by:
        equals in interface java.util.Map<K,java.util.List<V>>
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface java.util.Map<K,java.util.List<V>>
        Overrides:
        hashCode in class java.lang.Object
      • toString

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