# Package org.apache.commons.collections4.multimap

package org.apache.commons.collections4.multimap
Implements the `MultiValuedMap` interfaces. A MultiValuedMap holds a collection of values against each key.

The following implementations are provided in the package:

- ArrayListValuedHashMap - ListValuedMap implementation using a HashMap/ArrayList
- HashSetValuedHashMap - SetValuedMap implementation using a HashMap/HashSet

The following decorators are provided in the package:

- Transformed - transforms elements added to the MultiValuedMap
- Unmodifiable - ensures the collection cannot be altered

- Related Packages
  Package
  Description
  org.apache.commons.collections4
  Interfaces and utilities shared across all packages.
- Classes
  Class
  Description
  AbstractListValuedMap<K,V>
  Abstract implementation of the `ListValuedMap` interface to simplify the creation of subclass implementations.
  AbstractMultiValuedMap<K,V>
  Abstract implementation of the `MultiValuedMap` interface to simplify the creation of subclass implementations.
  AbstractMultiValuedMapDecorator<K,V>
  Decorates another `MultiValuedMap` to provide additional behavior.
  AbstractSetValuedMap<K,V>
  Abstract implementation of the `SetValuedMap` interface to simplify the creation of subclass implementations.
  ArrayListValuedHashMap<K,V>
  Implements a `ListValuedMap`, using a `HashMap` to provide data storage and `ArrayList`s as value collections.
  ArrayListValuedLinkedHashMap<K,V>
  Implements a `ListValuedMap`, using a `LinkedHashMap` to provide data storage and `ArrayList`s as value collections.
  HashSetValuedHashMap<K,V>
  Implements a `SetValuedMap`, using a `HashMap` to provide data storage and `HashSet`s as value collections.
  LinkedHashSetValuedLinkedHashMap<K,V>
  Implements a `SetValuedMap`, using a `LinkedHashMap` to provide data storage and `LinkedHashSet`s as value collections.
  TransformedMultiValuedMap<K,V>
  Decorates another `MultiValuedMap` to transform objects that are added.
  UnmodifiableMultiValuedMap<K,V>
  Decorates another `MultiValuedMap` to ensure it can't be altered.