# Class AbstractMapDecorator<K,V>

java.lang.Object
org.apache.commons.collections4.map.AbstractIterableMap<K,V>
org.apache.commons.collections4.map.AbstractMapDecorator<K,V>

Type Parameters:
  `K` - the type of the keys in the map
  `V` - the type of the values in the map

All Implemented Interfaces:
  `Map<K,V>`, `Get<K,V>`, `IterableGet<K,V>`, `IterableMap<K,V>`, `Put<K,V>`

Direct Known Subclasses:
  `AbstractBidiMapDecorator`, `AbstractOrderedMapDecorator`, `AbstractSortedMapDecorator`, `DefaultedMap`, `FixedSizeMap`, `LazyMap`, `ListOrderedMap`, `MultiKeyMap`, `MultiValueMap`, `PassiveExpiringMap`, `PredicatedMap`, `TransformedMap`, `UnmodifiableMap`

public abstract class AbstractMapDecorator<K,V> extends AbstractIterableMap<K,V>
Provides a base decorator that enables additional functionality to be added to a Map via decoration.

Methods are forwarded directly to the decorated map.

This implementation does not perform any special processing with `entrySet()`, `keySet()` or `values()`. Instead it simply returns the set/collection from the wrapped map. This may be undesirable, for example if you are trying to write a validating implementation it would provide a loophole around the validation. But, you might want that loophole, so this class is kept simple.

Since:
  3.0

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface java.util.Map

  `Map.Entry<K,V>`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AbstractMapDecorator()`
  Constructor only used in deserialization, do not use otherwise.
  `protected`
  `AbstractMapDecorator(Map<K,V> map)`
  Constructor that wraps (not copies).

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  Removes all of the mappings from this map.
  `boolean`
  `containsKey(Object key)`
  Tests for presence of a given key.
  `boolean`
  `containsValue(Object value)`
  Tests for presence of a given value.
  `protected Map<K,V>`
  `decorated()`
  Gets the map being decorated.
  `Set<Map.Entry<K,V>>`
  `entrySet()`
  Gets a set view of the mappings contained in this map.
  `boolean`
  `equals(Object object)`
  `V`
  `get(Object key)`
  Gets a value at a given key.
  `int`
  `hashCode()`
  `boolean`
  `isEmpty()`
  Tests whether this instance contains any key-value mappings.
  `Set<K>`
  `keySet()`
  Gets a view of the keys contained in this map.
  `V`
  `put(K key, V value)`
  Associates the specified value with the specified key in this map.
  `void`
  `putAll(Map<? extends K,? extends V> mapToCopy)`
  Copies all of the mappings from the specified map to this map.
  `V`
  `remove(Object key)`
  Remove a key-value mappings.
  `int`
  `size()`
  Gets the number of key-value mappings in this map.
  `String`
  `toString()`
  `Collection<V>`
  `values()`
  Gets a a collection view of the values contained in this map.

  ### Methods inherited from class org.apache.commons.collections4.map.AbstractIterableMap

  `mapIterator`

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface java.util.Map

  `compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll`

- ## Constructor Details

  - ### AbstractMapDecorator

    protected AbstractMapDecorator()
    Constructor only used in deserialization, do not use otherwise.
    Since:
      3.1

  - ### AbstractMapDecorator

    protected AbstractMapDecorator(Map<K,V> map)
    Constructor that wraps (not copies).
    Parameters:
      `map` - the map to decorate, must not be null
    Throws:
      `NullPointerException` - if the map is null

- ## Method Details

  - ### clear

    public void clear()
    Description copied from interface: `Put`
    Removes all of the mappings from this map.
    See Also:
      - `Map.clear()`

  - ### containsKey

    public boolean containsKey(Object key)
    Description copied from interface: `Get`
    Tests for presence of a given key.
    Parameters:
      `key` - key whose presence in this map is to be tested
    Returns:
      `true` if this map contains a mapping for the specified key
    See Also:
      - `Map.containsKey(Object)`

  - ### containsValue

    public boolean containsValue(Object value)
    Description copied from interface: `Get`
    Tests for presence of a given value.
    Parameters:
      `value` - value whose presence in this map is to be tested
    Returns:
      `true` if this map maps one or more keys to the specified value
    See Also:
      - `Map.containsValue(Object)`

  - ### decorated

    protected Map<K,V> decorated()
    Gets the map being decorated.
    Returns:
      the decorated map

  - ### entrySet

    public Set<Map.Entry<K,V>> entrySet()
    Description copied from interface: `Get`
    Gets a set view of the mappings contained in this map.
    Returns:
      a set view of the mappings contained in this map.
    See Also:
      - `Map.entrySet()`

  - ### equals

    public boolean equals(Object object)
    Specified by:
      `equals` in interface `Map<K,V>`
    Overrides:
      `equals` in class `Object`

  - ### get

    public V get(Object key)
    Description copied from interface: `Get`
    Gets a value at a given key.
    Parameters:
      `key` - the key whose associated value is to be returned
    Returns:
      the value to which the specified key is mapped, or `null` if this map contains no mapping for the key
    See Also:
      - `Map.get(Object)`

  - ### hashCode

    public int hashCode()
    Specified by:
      `hashCode` in interface `Map<K,V>`
    Overrides:
      `hashCode` in class `Object`

  - ### isEmpty

    public boolean isEmpty()
    Description copied from interface: `Get`
    Tests whether this instance contains any key-value mappings.
    Returns:
      `true` if this map contains no key-value mappings
    See Also:
      - `Map.isEmpty()`

  - ### keySet

    public Set<K> keySet()
    Description copied from interface: `Get`
    Gets a view of the keys contained in this map.
    Returns:
      a set view of the keys contained in this map
    See Also:
      - `Map.keySet()`

  - ### put

    public V put(K key, V value)
    Description copied from interface: `Put`
    Associates the specified value with the specified key in this map.

    Note that the return type is Object, rather than V as in the Map interface. See the class Javadoc for further info.

    Parameters:
      `key` - key with which the specified value is to be associated
      `value` - value to be associated with the specified key
    Returns:
      the previous value associated with `key`, or `null` if there was no mapping for `key`. (A `null` return can also indicate that the map previously associated `null` with `key`, if the implementation supports `null` values.)
    See Also:
      - `Map.put(Object, Object)`

  - ### putAll

    public void putAll(Map<? extends K,? extends V> mapToCopy)
    Description copied from interface: `Put`
    Copies all of the mappings from the specified map to this map.
    Parameters:
      `mapToCopy` - mappings to be stored in this map
    See Also:
      - `Map.putAll(Map)`

  - ### remove

    public V remove(Object key)
    Description copied from interface: `Get`
    Remove a key-value mappings.
    Parameters:
      `key` - key whose mapping is to be removed from the map
    Returns:
      the previous value associated with `key`, or `null` if there was no mapping for `key`.
    See Also:
      - `Map.remove(Object)`

  - ### size

    public int size()
    Description copied from interface: `Get`
    Gets the number of key-value mappings in this map.
    Returns:
      the number of key-value mappings in this map.
    See Also:
      - `Map.size()`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### values

    public Collection<V> values()
    Description copied from interface: `Get`
    Gets a a collection view of the values contained in this map.
    Returns:
      a collection view of the values contained in this map.
    See Also:
      - `Map.values()`