# Interface CompositeMap.MapMutator<K,V>

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

All Superinterfaces:
  `Serializable`

Enclosing class:
  `CompositeMap<K,V>`

public static interface CompositeMap.MapMutator<K,V> extends Serializable
This interface allows definition for all of the indeterminate mutators in a CompositeMap, as well as providing a hook for callbacks on key collisions.

Since:
  3.0

- ## Method Summary

  Modifier and Type
  Method
  Description
  `V`
  `put(CompositeMap<K,V> map, Map<K,V>[] composited, K key, V value)`
  Called when the CompositeMap.put() method is invoked.
  `void`
  `putAll(CompositeMap<K,V> map, Map<K,V>[] composited, Map<? extends K,? extends V> mapToAdd)`
  Called when the CompositeMap.putAll() method is invoked.
  `void`
  `resolveCollision(CompositeMap<K,V> composite, Map<K,V> existing, Map<K,V> added, Collection<K> intersect)`
  Called when adding a new Composited Map results in a key collision.

- ## Method Details

  - ### put

    V put(CompositeMap<K,V> map, Map<K,V>[] composited, K key, V value)
    Called when the CompositeMap.put() method is invoked.
    Parameters:
      `map` - the CompositeMap which is being modified
      `composited` - array of Maps in the CompositeMap being modified
      `key` - key with which the specified value is to be associated.
      `value` - value to be associated with the specified key.
    Returns:
      previous value associated with specified key, or `null` if there was no mapping for key. A `null` return can also indicate that the map previously associated `null` with the specified key, if the implementation supports `null` values.
    Throws:
      `UnsupportedOperationException` - if not defined
      `ClassCastException` - if the class of the specified key or value prevents it from being stored in this map.
      `IllegalArgumentException` - if some aspect of this key or value prevents it from being stored in this map.
      `NullPointerException` - this map does not permit `null` keys or values, and the specified key or value is `null`.

  - ### putAll

    void putAll(CompositeMap<K,V> map, Map<K,V>[] composited, Map<? extends K,? extends V> mapToAdd)
    Called when the CompositeMap.putAll() method is invoked.
    Parameters:
      `map` - the CompositeMap which is being modified
      `composited` - array of Maps in the CompositeMap being modified
      `mapToAdd` - Mappings to be stored in this CompositeMap
    Throws:
      `UnsupportedOperationException` - if not defined
      `ClassCastException` - if the class of the specified key or value prevents it from being stored in this map.
      `IllegalArgumentException` - if some aspect of this key or value prevents it from being stored in this map.
      `NullPointerException` - this map does not permit `null` keys or values, and the specified key or value is `null`.

  - ### resolveCollision

    void resolveCollision(CompositeMap<K,V> composite, Map<K,V> existing, Map<K,V> added, Collection<K> intersect)
    Called when adding a new Composited Map results in a key collision.
    Parameters:
      `composite` - the CompositeMap with the collision
      `existing` - the Map already in the composite which contains the offending key
      `added` - the Map being added
      `intersect` - the intersection of the keysets of the existing and added maps