Class MultiMap<K,V>

java.lang.Object
com.pnfsoftware.jeb.util.collect.MultiMap<K,V>
Type Parameters:
K - key type
V - type of value to be stored

@Ser public class MultiMap<K,V> extends Object
A multi-map of key-values, whose insertion order for the values of a given key is maintained. This class is serialializable. Null key is allowed; null values are allowed.

Thread-safety: none.

Note: this class does not implement the Map interface, but attempts to follow its guidelines and contracts the best it can. One notable exception is that this class does not override hashCode/equals.

  • Constructor Details

    • MultiMap

      public MultiMap()
      Create a new multi-map.
    • MultiMap

      public MultiMap(CollectionOrder keyOrder)
      Create a new multi-map.
      Parameters:
      keyOrder -
  • Method Details

    • clear

      public void clear()
    • keySize

      public int keySize()
    • isEmpty

      public boolean isEmpty()
    • size

      public int size()
      Get the number of key-value mappings (per Map interface). That is, the number of values.
      Returns:
    • put

      public int put(K key, V value)
    • putMulti

      public void putMulti(K key, Collection<? extends V> values)
      Add multiple elements mapped by the same key. Note that if an empty collection is provided, the entry for the provided key will not be be explicitly created.
      Parameters:
      key -
      values -
    • putAll

      public void putAll(Map<? extends K,List<? extends V>> m)
    • createKey

      public boolean createKey(K key)
      Create an explicit entry for a given key. If no values mapped by the given key previously existed, the associated value will be an empty collecction.
      Parameters:
      key -
      Returns:
      true if the map did not already contain the key; false otherwise (the key entry existed before)
    • containsKey

      public boolean containsKey(K key)
    • containsValue

      public boolean containsValue(V value)
    • get

      public List<V> get(K key, boolean safe)
      Retrieve the list of values associated with the provided key.
      Parameters:
      key - a key
      safe - if true, an empty list of values is returned if the key does not exist
      Returns:
      a list, possibly null or empty (depending on the safe parameter}
    • get

      public List<V> get(K key)
      Retrieve the list of values associated with the provided key. Same as get(key, safe=false).
      Parameters:
      key - a key
      Returns:
      a list, possibly null if nothing was put for the provided key
    • getSafe

      public List<V> getSafe(K key)
      Retrieve the list of values associated with the provided key. Same as get(key, safe=true).
      Parameters:
      key -
      Returns:
    • remove

      public List<V> remove(K key)
    • removeValue

      public V removeValue(K key, V value)
    • removeValue

      public V removeValue(K key, V value, boolean removeEmptyBucket)
    • removeMulti

      public int removeMulti(K key, Collection<? extends V> values)
    • removeMulti

      public int removeMulti(K key, Collection<? extends V> values, boolean removeEmptyBucket)
    • values

      public Collection<V> values()
    • keySet

      public Set<K> keySet()
      Retrieve a read-only view of the keys.

      WARNING: This method does not respect the Map.keySet() contract: the set returned is read-only.

      Returns:
      read-only view of the key set
    • removeAll

      public boolean removeAll(Collection<K> keys)
      Remove all entries mapping to the collection of keys.

      Similar semantics as Set.removeAll(Collection).

      Parameters:
      keys -
      Returns:
      true if the multi-map was modified
    • toString

      public String toString()
      Overrides:
      toString in class Object