Class MultiMap<V>

  • Type Parameters:
    V - the entry type for multimap values
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,​java.util.List<V>>

    public class MultiMap<V>
    extends java.util.HashMap<java.lang.String,​java.util.List<V>>
    A multi valued Map.
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.util.AbstractMap

        java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,​V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,​V extends java.lang.Object>
      • Nested classes/interfaces inherited from interface java.util.Map

        java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
    • Constructor Summary

      Constructors 
      Constructor Description
      MultiMap()  
      MultiMap​(java.util.Map<java.lang.String,​java.util.List<V>> map)  
      MultiMap​(MultiMap<V> map)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(java.lang.String name, V value)
      Add value to multi valued entry.
      boolean addAllValues​(MultiMap<V> map)
      Merge values.
      void addValues​(java.lang.String name, java.util.List<V> values)
      Add values to multi valued entry.
      void addValues​(java.lang.String name, V[] values)
      Add values to multi valued entry.
      boolean containsSimpleValue​(V value)
      Test for a specific single value in the map.
      java.lang.String getString​(java.lang.String name)
      Get value as String.
      V getValue​(java.lang.String name, int i)
      Get a value from a multiple value.
      java.util.List<V> getValues​(java.lang.String name)
      Get multiple values.
      java.util.List<V> put​(java.lang.String name, V value)
      Put multi valued entry.
      void putAllValues​(java.util.Map<java.lang.String,​V> input)
      Shorthand version of putAll
      java.util.List<V> putValues​(java.lang.String name, java.util.List<V> values)
      Put multi valued entry.
      java.util.List<V> putValues​(java.lang.String name, V... values)
      Put multi valued entry.
      boolean removeValue​(java.lang.String name, V value)
      Remove value.
      java.lang.String toString()  
      java.util.Map<java.lang.String,​java.lang.String[]> toStringArrayMap()  
      • Methods inherited from class java.util.HashMap

        clear, clone, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, forEach, get, getOrDefault, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
      • Methods inherited from class java.util.AbstractMap

        equals, hashCode
      • Methods inherited from class java.lang.Object

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

        equals, hashCode
    • Constructor Detail

      • MultiMap

        public MultiMap()
      • MultiMap

        public MultiMap​(java.util.Map<java.lang.String,​java.util.List<V>> map)
      • MultiMap

        public MultiMap​(MultiMap<V> map)
    • Method Detail

      • getValues

        public java.util.List<V> getValues​(java.lang.String name)
        Get multiple values. Single valued entries are converted to singleton lists.
        Parameters:
        name - The entry key.
        Returns:
        Unmodifieable List of values.
      • getValue

        public V getValue​(java.lang.String name,
                          int i)
        Get a value from a multiple value. If the value is not a multivalue, then index 0 retrieves the value or null.
        Parameters:
        name - The entry key.
        i - Index of element to get.
        Returns:
        Unmodifieable List of values.
      • getString

        public java.lang.String getString​(java.lang.String name)
        Get value as String. Single valued items are converted to a String with the toString() Object method. Multi valued entries are converted to a comma separated List. No quoting of commas within values is performed.
        Parameters:
        name - The entry key.
        Returns:
        String value.
      • put

        public java.util.List<V> put​(java.lang.String name,
                                     V value)
        Put multi valued entry.
        Parameters:
        name - The entry key.
        value - The simple value
        Returns:
        The previous value or null.
      • putAllValues

        public void putAllValues​(java.util.Map<java.lang.String,​V> input)
        Shorthand version of putAll
        Parameters:
        input - the input map
      • putValues

        public java.util.List<V> putValues​(java.lang.String name,
                                           java.util.List<V> values)
        Put multi valued entry.
        Parameters:
        name - The entry key.
        values - The List of multiple values.
        Returns:
        The previous value or null.
      • putValues

        @SafeVarargs
        public final java.util.List<V> putValues​(java.lang.String name,
                                                 V... values)
        Put multi valued entry.
        Parameters:
        name - The entry key.
        values - The array of multiple values.
        Returns:
        The previous value or null.
      • add

        public void add​(java.lang.String name,
                        V value)
        Add value to multi valued entry. If the entry is single valued, it is converted to the first value of a multi valued entry.
        Parameters:
        name - The entry key.
        value - The entry value.
      • addValues

        public void addValues​(java.lang.String name,
                              java.util.List<V> values)
        Add values to multi valued entry. If the entry is single valued, it is converted to the first value of a multi valued entry.
        Parameters:
        name - The entry key.
        values - The List of multiple values.
      • addValues

        public void addValues​(java.lang.String name,
                              V[] values)
        Add values to multi valued entry. If the entry is single valued, it is converted to the first value of a multi valued entry.
        Parameters:
        name - The entry key.
        values - The String array of multiple values.
      • addAllValues

        public boolean addAllValues​(MultiMap<V> map)
        Merge values.
        Parameters:
        map - the map to overlay on top of this one, merging together values if needed.
        Returns:
        true if an existing key was merged with potentially new values, false if either no change was made, or there were only new keys.
      • removeValue

        public boolean removeValue​(java.lang.String name,
                                   V value)
        Remove value.
        Parameters:
        name - The entry key.
        value - The entry value.
        Returns:
        true if it was removed.
      • containsSimpleValue

        public boolean containsSimpleValue​(V value)
        Test for a specific single value in the map.

        NOTE: This is a SLOW operation, and is actively discouraged.

        Parameters:
        value - the value to search for
        Returns:
        true if contains simple value
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.util.AbstractMap<java.lang.String,​java.util.List<V>>
      • toStringArrayMap

        public java.util.Map<java.lang.String,​java.lang.String[]> toStringArrayMap()
        Returns:
        Map of String arrays