org.apache.mina.util

## Class CopyOnWriteMap<K,V>

- java.lang.Object
- - org.apache.mina.util.CopyOnWriteMap<K,V>

- All Implemented Interfaces:
    Cloneable, Map<K,V>

      public class CopyOnWriteMap<K,V>
      extends Object
      implements Map<K,V>, Cloneable

  A thread-safe version of `Map` in which all operations that change the Map are implemented by making a new copy of the underlying Map. While the creation of a new Map can be expensive, this class is designed for cases in which the primary function is to read data from the Map, not to modify the Map. Therefore the operations that do not cause a change to this class happen quickly and concurrently.
  Author:
    Apache MINA Project

- - ### Nested Class Summary

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

      `Map.Entry<K,V>`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CopyOnWriteMap()` Creates a new instance of CopyOnWriteMap.
    `CopyOnWriteMap(int initialCapacity)` Creates a new instance of CopyOnWriteMap with the specified initial size
    `CopyOnWriteMap(Map<K,V> data)` Creates a new instance of CopyOnWriteMap in which the initial data being held by this map is contained in the supplied map.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()` Removes all entries in this map.
    `Object` | `clone()`
    `boolean` | `containsKey(Object key)` Returns true if this map contains the provided key, otherwise this method return false.
    `boolean` | `containsValue(Object value)` Returns true if this map contains the provided value, otherwise this method returns false.
    `Set<Map.Entry<K,V>>` | `entrySet()` This method will return a read-only `Set`.
    `V` | `get(Object key)` Returns the value associated with the provided key from this map.
    `boolean` | `isEmpty()` Returns true if this map is empty, otherwise false.
    `Set<K>` | `keySet()` This method will return a read-only `Set`.
    `V` | `put(K key, V value)` Adds the provided key and value to this map.
    `void` | `putAll(Map<? extends K,? extends V> newData)` Inserts all the keys and values contained in the provided map to this map.
    `V` | `remove(Object key)` Removed the value and key from this map based on the provided key.
    `int` | `size()` Returns the number of key/value pairs in this map.
    `Collection<V>` | `values()` This method will return a read-only `Collection`.

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

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

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

      `equals, hashCode`

- - ### Constructor Detail

    - #### CopyOnWriteMap

          public CopyOnWriteMap()

      Creates a new instance of CopyOnWriteMap.

    - #### CopyOnWriteMap

          public CopyOnWriteMap(int initialCapacity)

      Creates a new instance of CopyOnWriteMap with the specified initial size
      Parameters:
        `initialCapacity` - The initial size of the Map.

    - #### CopyOnWriteMap

          public CopyOnWriteMap(Map<K,V> data)

      Creates a new instance of CopyOnWriteMap in which the initial data being held by this map is contained in the supplied map.
      Parameters:
        `data` - A Map containing the initial contents to be placed into this class.

  - ### Method Detail

    - #### put

          public V put(K key,
              V value)

      Adds the provided key and value to this map.
      Specified by:
        `put` in interface `Map<K,V>`
      See Also:
        `Map.put(java.lang.Object, java.lang.Object)`

    - #### remove

          public V remove(Object key)

      Removed the value and key from this map based on the provided key.
      Specified by:
        `remove` in interface `Map<K,V>`
      See Also:
        `Map.remove(java.lang.Object)`

    - #### putAll

          public void putAll(Map<? extends K,? extends V> newData)

      Inserts all the keys and values contained in the provided map to this map.
      Specified by:
        `putAll` in interface `Map<K,V>`
      See Also:
        `Map.putAll(java.util.Map)`

    - #### clear

          public void clear()

      Removes all entries in this map.
      Specified by:
        `clear` in interface `Map<K,V>`
      See Also:
        `Map.clear()`

    - #### size

          public int size()

      Returns the number of key/value pairs in this map.
      Specified by:
        `size` in interface `Map<K,V>`
      See Also:
        `Map.size()`

    - #### isEmpty

          public boolean isEmpty()

      Returns true if this map is empty, otherwise false.
      Specified by:
        `isEmpty` in interface `Map<K,V>`
      See Also:
        `Map.isEmpty()`

    - #### containsKey

          public boolean containsKey(Object key)

      Returns true if this map contains the provided key, otherwise this method return false.
      Specified by:
        `containsKey` in interface `Map<K,V>`
      See Also:
        `Map.containsKey(java.lang.Object)`

    - #### containsValue

          public boolean containsValue(Object value)

      Returns true if this map contains the provided value, otherwise this method returns false.
      Specified by:
        `containsValue` in interface `Map<K,V>`
      See Also:
        `Map.containsValue(java.lang.Object)`

    - #### get

          public V get(Object key)

      Returns the value associated with the provided key from this map.
      Specified by:
        `get` in interface `Map<K,V>`
      See Also:
        `Map.get(java.lang.Object)`

    - #### keySet

          public Set<K> keySet()

      This method will return a read-only `Set`.
      Specified by:
        `keySet` in interface `Map<K,V>`

    - #### values

          public Collection<V> values()

      This method will return a read-only `Collection`.
      Specified by:
        `values` in interface `Map<K,V>`

    - #### entrySet

          public Set<Map.Entry<K,V>> entrySet()

      This method will return a read-only `Set`.
      Specified by:
        `entrySet` in interface `Map<K,V>`

    - #### clone

          public Object clone()

      Overrides:
        `clone` in class `Object`

Copyright © 2004-2012 Apache MINA Project. All Rights Reserved.