Class MultiMap<K,​V>

  • Type Parameters:
    K - the type of the keys the map uses.
    V - the type of the values the map uses.

    public class MultiMap<K,​V>
    extends Object
    A lightweight implementation of a MultiMap, that is a Map that is able to hold multiple values for every key.

    This MultiMap uses a LinkedHashMap together with a ArrayList in order to keep the order of its entries.

    • Constructor Detail

      • MultiMap

        public MultiMap​(int size)
        Constructs a new MultiMap.
        Parameters:
        size - the initial capacity.
    • Method Detail

      • size

        public int size()
      • isEmpty

        public boolean isEmpty()
      • getFirst

        public V getFirst​(K key)
        Get the first value for the given key, or null if there are no entries.
        Parameters:
        key - TODO javadoc me please
        Returns:
        the first value or null.
      • getAll

        public List<VgetAll​(K key)
        Get all values for the given key. Returns the empty set if there are none.

        Changes to the returned set will update the underlying MultiMap if the return set is not empty.

        Parameters:
        key - TODO javadoc me please
        Returns:
        all values for the given key.
      • put

        public boolean put​(K key,
                           V value)
      • putFirst

        public boolean putFirst​(K key,
                                V value)
      • remove

        public V remove​(K key)
        Removes all mappings for the given key and returns the first value if there where mappings or null if not.
        Parameters:
        key - TODO javadoc me please
        Returns:
        the first value of the given key or null.
      • removeOne

        public boolean removeOne​(K key,
                                 V value)
        Remove the mapping of the given key to the value.

        Returns true if the mapping was removed and false if the mapping did not exist.

        Parameters:
        key - TODO javadoc me please
        value - TODO javadoc me please
        Returns:
        true if the mapping was removed, false otherwise.
      • remove

        public List<Vremove​(K key,
                              int num)
        Remove the given number of values for a given key. May return less values then requested.
        Parameters:
        key - the key to remove from.
        num - the number of values to remove.
        Returns:
        a list of the removed values.
        Since:
        4.4.0
      • putAll

        public void putAll​(Map<? extends K,​? extends V> map)
      • clear

        public void clear()
      • values

        public List<Vvalues()
        Returns a new list containing all values of this multi map.
        Returns:
        a new list with all values.