Package com.norconex.commons.lang.map

# Class ObservableMap<K,V>

java.lang.Object
com.norconex.commons.lang.map.ObservableMap<K,V>

Type Parameters:
  `K` - the type of keys maintained by the map we are observing
  `V` - the type of mapped values

All Implemented Interfaces:
  `Map<K,V>`

Direct Known Subclasses:
  `Properties`

public class ObservableMap<K,V> extends Object implements Map<K,V>
A map implementation that reports changes to added `MapChangeListener` instance. Changes are triggered when a value change is detected in the following method calls: `put(Object, Object)`, `putAll(Map)`, `remove(Object)`, and `clear()`. This class will not detect changes made to key or value objects modified outside this class. This class can be used as a decorator to other `Map` implementations.

Since:
  1.4

- ## Nested Class Summary

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

  `Map.Entry<K extends Object,V extends Object>`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ObservableMap()`
  `ObservableMap(Map<K,V> map)`
  Decorates map argument as an `ObservableMap`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addMapChangeListener(MapChangeListener<K,V> listener)`
  Adds a map change listener.
  `void`
  `clear()`
  `void`
  `clearMapChangeListeners()`
  Clears the listeners associated with this instance.
  `boolean`
  `containsKey(Object key)`
  `boolean`
  `containsValue(Object value)`
  `Set<Map.Entry<K,V>>`
  `entrySet()`
  `V`
  `get(Object key)`
  `List<MapChangeListener<K,V>>`
  `getMapChangeListeners()`
  Gets an unmodifiable list of listeners.
  `boolean`
  `isEmpty()`
  `Set<K>`
  `keySet()`
  `V`
  `put(K key, V value)`
  `void`
  `putAll(Map<? extends K,? extends V> m)`
  `V`
  `remove(Object key)`
  `void`
  `removeMapChangeListener(MapChangeListener<K,V> listener)`
  Removes a map change listener.
  `int`
  `size()`
  `String`
  `toString()`
  `Collection<V>`
  `values()`

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

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

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

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

- ## Constructor Details

  - ### ObservableMap

    public ObservableMap()

  - ### ObservableMap

    public ObservableMap(Map<K,V> map)
    Decorates map argument as an `ObservableMap`.
    Parameters:
      `map` - the Map to decorate

- ## Method Details

  - ### addMapChangeListener

    public void addMapChangeListener(MapChangeListener<K,V> listener)
    Adds a map change listener.
    Parameters:
      `listener` - change listener

  - ### removeMapChangeListener

    public void removeMapChangeListener(MapChangeListener<K,V> listener)
    Removes a map change listener.
    Parameters:
      `listener` - change listener

  - ### getMapChangeListeners

    public List<MapChangeListener<K,V>> getMapChangeListeners()
    Gets an unmodifiable list of listeners.
    Returns:
      listeners
    Since:
      3.0.0

  - ### clearMapChangeListeners

    public void clearMapChangeListeners()
    Clears the listeners associated with this instance.
    Since:
      3.0.0

  - ### size

    public int size()
    Specified by:
      `size` in interface `Map<K,V>`

  - ### isEmpty

    public boolean isEmpty()
    Specified by:
      `isEmpty` in interface `Map<K,V>`

  - ### containsKey

    public boolean containsKey(Object key)
    Specified by:
      `containsKey` in interface `Map<K,V>`

  - ### containsValue

    public boolean containsValue(Object value)
    Specified by:
      `containsValue` in interface `Map<K,V>`

  - ### get

    public V get(Object key)
    Specified by:
      `get` in interface `Map<K,V>`

  - ### put

    public V put(K key, V value)
    Specified by:
      `put` in interface `Map<K,V>`

  - ### remove

    public V remove(Object key)
    Specified by:
      `remove` in interface `Map<K,V>`

  - ### putAll

    public void putAll(Map<? extends K,? extends V> m)
    Specified by:
      `putAll` in interface `Map<K,V>`

  - ### clear

    public void clear()
    Specified by:
      `clear` in interface `Map<K,V>`

  - ### keySet

    public Set<K> keySet()
    Specified by:
      `keySet` in interface `Map<K,V>`

  - ### values

    public Collection<V> values()
    Specified by:
      `values` in interface `Map<K,V>`

  - ### entrySet

    public Set<Map.Entry<K,V>> entrySet()
    Specified by:
      `entrySet` in interface `Map<K,V>`

  - ### toString

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