io.undertow.util

## Class CopyOnWriteMap<K,V>

- java.lang.Object
- - io.undertow.util.CopyOnWriteMap<K,V>

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

    public class CopyOnWriteMap<K,V>
    extends Object
    implements ConcurrentMap<K,V>

A basic copy on write map. It simply delegates to an underlying map, that is swapped out every time the map is updated. Note: this is not a secure map. It should not be used in situations where the map is populated from user input.

Author:
  Stuart Douglas

### Nested Class Summary

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

`Map.Entry<K,V>`

### Constructor Summary

Constructors
Constructor and Description
`CopyOnWriteMap()`
`CopyOnWriteMap(Map<K,V> existing)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `clear()`
`boolean` `containsKey(Object key)`
`boolean` `containsValue(Object value)`
`Set<Map.Entry<K,V>>` `entrySet()`
`V` `get(Object key)`
`boolean` `isEmpty()`
`Set<K>` `keySet()`
`V` `put(K key, V value)`
`void` `putAll(Map<? extends K,? extends V> m)`
`V` `putIfAbsent(K key, V value)`
`V` `remove(Object key)`
`boolean` `remove(Object key, Object value)`
`V` `removeInternal(Object key)`
`V` `replace(K key, V value)`
`boolean` `replace(K key, V oldValue, V newValue)`
`int` `size()`
`Collection<V>` `values()`

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

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

### Methods inherited from interface java.util.concurrent.ConcurrentMap

`compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, replaceAll`

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

`equals, hashCode`

### Constructor Detail

#### CopyOnWriteMap

    public CopyOnWriteMap()

#### CopyOnWriteMap

    public CopyOnWriteMap(Map<K,V> existing)

### Method Detail

#### putIfAbsent

    public V putIfAbsent(K key,
                         V value)

Specified by:
  `putIfAbsent` in interface `ConcurrentMap<K,V>`
Specified by:
  `putIfAbsent` in interface `Map<K,V>`

#### remove

    public boolean remove(Object key,
                          Object value)

Specified by:
  `remove` in interface `ConcurrentMap<K,V>`
Specified by:
  `remove` in interface `Map<K,V>`

#### replace

    public boolean replace(K key,
                           V oldValue,
                           V newValue)

Specified by:
  `replace` in interface `ConcurrentMap<K,V>`
Specified by:
  `replace` in interface `Map<K,V>`

#### replace

    public V replace(K key,
                     V value)

Specified by:
  `replace` in interface `ConcurrentMap<K,V>`
Specified by:
  `replace` in interface `Map<K,V>`

#### 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>`

#### removeInternal

    public V removeInternal(Object key)