org.apache.commons.collections.map

## Class DefaultedMap

- java.lang.Object
- - org.apache.commons.collections.map.AbstractMapDecorator
  - - org.apache.commons.collections.map.DefaultedMap

- All Implemented Interfaces:
    Serializable, Map

      public class DefaultedMap
      extends AbstractMapDecorator
      implements Map, Serializable

  Decorates another `Map` returning a default value if the map does not contain the requested key.

  When the `get(Object)` method is called with a key that does not exist in the map, this map will return the default value specified in the constructor/factory. Only the get method is altered, so the `Map.containsKey(Object)` can be used to determine if a key really is in the map or not.

  The defaulted value is not added to the map. Compare this behaviour with `LazyMap`, which does add the value to the map (via a Transformer).

  For instance:

       Map map = new DefaultedMap("NULL");
       Object obj = map.get("Surname");
       // obj == "NULL"

  After the above code is executed the map is still empty.

  Note that DefaultedMap is not synchronized and is not thread-safe. If you wish to use this map from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this map using `Collections.synchronizedMap(Map)`. This class may throw exceptions when accessed by concurrent threads without synchronization.

  Since:
    Commons Collections 3.2
  Version:
    $Revision: 1.7 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
  Author:
    Stephen Colebourne, Rafael U.C. Afonso
  See Also:
    `LazyMap`, Serialized Form

- - ### Nested Class Summary

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

      `Map.Entry`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Object` | `value` The transformer to use if the map does not contain a key

    - ### Fields inherited from class org.apache.commons.collections.map.AbstractMapDecorator

      `map`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `DefaultedMap(Map map, Object value)` Constructor that wraps (not copies).
    `` | `DefaultedMap(Object defaultValue)` Constructs a new empty `DefaultedMap` that decorates a `HashMap`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Map` | `decorate(Map map, Factory factory)` Factory method to create a defaulting map.
    `static Map` | `decorate(Map map, Object defaultValue)` Factory method to create a defaulting map.
    `static Map` | `decorate(Map map, Transformer factory)` Factory method to create a defaulting map.
    `Object` | `get(Object key)`

    - ### Methods inherited from class org.apache.commons.collections.map.AbstractMapDecorator

      `clear, containsKey, containsValue, entrySet, equals, getMap, hashCode, isEmpty, keySet, put, putAll, remove, size, toString, values`

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

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

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

      `clear, containsKey, containsValue, entrySet, equals, hashCode, isEmpty, keySet, put, putAll, remove, size, values`

- - ### Field Detail

    - #### value

          protected final Object value

      The transformer to use if the map does not contain a key

  - ### Constructor Detail

    - #### DefaultedMap

          public DefaultedMap(Object defaultValue)

      Constructs a new empty `DefaultedMap` that decorates a `HashMap`.

      The object passed in will be returned by the map whenever an unknown key is requested.

      Parameters:
        `defaultValue` - the default value to return when the key is not found

    - #### DefaultedMap

          protected DefaultedMap(Map map,
                      Object value)

      Constructor that wraps (not copies).
      Parameters:
        `map` - the map to decorate, must not be null
        `value` - the value to use
      Throws:
        `IllegalArgumentException` - if map or transformer is null

  - ### Method Detail

    - #### decorate

          public static Map decorate(Map map,
                     Object defaultValue)

      Factory method to create a defaulting map.

      The value specified is returned when a missing key is found.

      Parameters:
        `map` - the map to decorate, must not be null
        `defaultValue` - the default value to return when the key is not found
      Throws:
        `IllegalArgumentException` - if map is null

    - #### decorate

          public static Map decorate(Map map,
                     Factory factory)

      Factory method to create a defaulting map.

      The factory specified is called when a missing key is found. The result will be returned as the result of the map get(key) method.

      Parameters:
        `map` - the map to decorate, must not be null
        `factory` - the factory to use, must not be null
      Throws:
        `IllegalArgumentException` - if map or factory is null

    - #### decorate

          public static Map decorate(Map map,
                     Transformer factory)

      Factory method to create a defaulting map.

      The transformer specified is called when a missing key is found. The key is passed to the transformer as the input, and the result will be returned as the result of the map get(key) method.

      Parameters:
        `map` - the map to decorate, must not be null
        `factory` - the factory to use, must not be null
      Throws:
        `IllegalArgumentException` - if map or factory is null

    - #### get

          public Object get(Object key)

      Specified by:
        `get` in interface `Map`
      Overrides:
        `get` in class `AbstractMapDecorator`

Copyright © 2001–2015 The Apache Software Foundation. All rights reserved.