Class MultiMap<K,V>

java.lang.Object
org.jivesoftware.smack.util.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.

  • Field Details

  • Constructor Details

    • MultiMap

      public MultiMap()
      Constructs a new MultiMap with a initial capacity of DEFAULT_MAP_SIZE.
    • MultiMap

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

    • size

      public int size()
    • isEmpty

      public boolean isEmpty()
    • containsKey

      public boolean containsKey(K key)
    • containsValue

      public boolean containsValue(V value)
    • 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<V> getAll(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<V> remove(K key, int num)
      Remove the given number of values for a given key. May return less values than 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()
    • keySet

      public Set<K> keySet()
    • values

      public List<V> values()
      Returns a new list containing all values of this multi map.
      Returns:
      a new list with all values.
    • entrySet

      public Set<Map.Entry<K,V>> entrySet()
    • asUnmodifiableMultiMap

    • clone

      public MultiMap<K,V> clone()
      Overrides:
      clone in class Object