Package org.apache.tomcat.util.collections

# Class ManagedConcurrentWeakHashMap<K,V>

java.lang.Object
java.util.AbstractMap<K,V>
org.apache.tomcat.util.collections.ManagedConcurrentWeakHashMap<K,V>

Type Parameters:
  `K` - The type of keys used with the Map instance
  `V` - The type of values used with the Map instance

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

public class ManagedConcurrentWeakHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>
Concurrent hash map that holds its keys via weak references. Unlike `WeakHashMap` this class does not handle dead keys during common access operations, but expects you to call its `maintain()` method periodically. Both keys and values are expected to be not-`null`.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class java.util.AbstractMap

  `AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>`

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

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ManagedConcurrentWeakHashMap()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  `boolean`
  `containsKey(Object key)`
  `boolean`
  `containsValue(Object value)`
  `Set<Map.Entry<K,V>>`
  `entrySet()`
  `V`
  `get(Object key)`
  `boolean`
  `isEmpty()`
  `void`
  `maintain()`
  Method, that has to be invoked periodically to clean dead keys from the map.
  `V`
  `put(K key, V value)`
  `V`
  `putIfAbsent(K key, V value)`
  `V`
  `remove(Object key)`
  `boolean`
  `remove(Object key, Object value)`
  `V`
  `replace(K key, V value)`
  `boolean`
  `replace(K key, V oldValue, V newValue)`
  `int`
  `size()`
  `Collection<V>`
  `values()`

  ### Methods inherited from class java.util.AbstractMap

  `clone, equals, hashCode, keySet, putAll, toString`

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

  `finalize, getClass, notify, notifyAll, 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, keySet, putAll`

- ## Constructor Details

  - ### ManagedConcurrentWeakHashMap

    public ManagedConcurrentWeakHashMap()

- ## Method Details

  - ### maintain

    public void maintain()
    Method, that has to be invoked periodically to clean dead keys from the map.

  - ### size

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

  - ### isEmpty

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

  - ### containsValue

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

  - ### containsKey

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

  - ### get

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

  - ### put

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

  - ### remove

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

  - ### clear

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

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

  - ### values

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

  - ### entrySet

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