Package org.geotools.util
Class SoftValueHashMap<K,V>
- Object
-
- AbstractMap<K,V>
-
- SoftValueHashMap<K,V>
-
- Type Parameters:
K
- The type of keys in the map.V
- The type of values in the map.
- All Implemented Interfaces:
Map<K,V>
public class SoftValueHashMap<K,V> extends AbstractMap<K,V>
A hash map implementation that uses soft references, leaving memory when an entry is not used anymore and memory is low.This map implementation actually maintains some of the first entries as hard references. Only oldest entries are retained by soft references, in order to avoid too aggressive garbage collection. The amount of entries to retain by hard reference is specified at construction time.
This map is thread-safe. It accepts the null key; it does not accept the null value. Usage of value, key or entry collections are supported. The iterator on the ConcurrentHashMap is weakly consistent.
- Since:
- 2.3
- Author:
- Simone Giannecchini, Martin Desruisseaux, Ugo Moschini
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
SoftValueHashMap.ValueCleaner<K,V>
A delegate that can be used to perform clean up operation, such as resource closing, before the values cached in soft part of the cache gets disposed of-
Nested classes/interfaces inherited from class AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
-
-
Field Summary
Fields Modifier and Type Field Description protected SoftValueHashMap.ValueCleaner
cleaner
The eventual cleaner
-
Constructor Summary
Constructors Constructor Description SoftValueHashMap()
Creates a map with the default hard references count.SoftValueHashMap(int hardReferencesCount)
Creates a map with the specified hard references count.SoftValueHashMap(int hardReferencesCount, SoftValueHashMap.ValueCleaner cleaner)
Creates a map with the specified hard references count.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Removes all mappings from this map.boolean
containsKey(Object key)
Returnstrue
if this map contains a mapping for the specified key.boolean
containsValue(Object value)
Returnstrue
if this map maps one or more keys to this value.Set<Map.Entry<K,V>>
entrySet()
Returns a set view of the mappings contained in this map.boolean
equals(Object object)
Compares the specified object with this map for equality.V
get(Object key)
Returns the value to which this map maps the specified key.int
getHardReferencesCount()
Returns the number of hard references kept in this cacheint
hashCode()
Returns the hash code value for this map.V
put(K key, V value)
Associates the specified value with the specified key in this map.void
putAll(Map<? extends K,? extends V> map)
Copies all of the mappings from the specified map to this map.V
remove(Object key)
Removes the mapping for this key from this map if present.int
size()
Returns the number of entries in this map.String
toString()
Returns a string representation of this map.-
Methods inherited from class AbstractMap
clone, isEmpty, keySet, values
-
Methods inherited from interface Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Field Detail
-
cleaner
protected SoftValueHashMap.ValueCleaner cleaner
The eventual cleaner
-
-
Constructor Detail
-
SoftValueHashMap
public SoftValueHashMap()
Creates a map with the default hard references count.
-
SoftValueHashMap
public SoftValueHashMap(int hardReferencesCount)
Creates a map with the specified hard references count.- Parameters:
hardReferencesCount
- The maximal number of hard references to keep.
-
SoftValueHashMap
public SoftValueHashMap(int hardReferencesCount, SoftValueHashMap.ValueCleaner cleaner)
Creates a map with the specified hard references count.- Parameters:
hardReferencesCount
- The maximal number of hard references to keep.
-
-
Method Detail
-
getHardReferencesCount
public int getHardReferencesCount()
Returns the number of hard references kept in this cache
-
size
public int size()
Returns the number of entries in this map.
-
containsKey
public boolean containsKey(Object key)
Returnstrue
if this map contains a mapping for the specified key.- Specified by:
containsKey
in interfaceMap<K,V>
- Overrides:
containsKey
in classAbstractMap<K,V>
-
containsValue
public boolean containsValue(Object value)
Returnstrue
if this map maps one or more keys to this value.- Specified by:
containsValue
in interfaceMap<K,V>
- Overrides:
containsValue
in classAbstractMap<K,V>
-
get
public V get(Object key)
Returns the value to which this map maps the specified key. Returnsnull
if the map contains no mapping for this key, or the value has been garbage collected.
-
put
public V put(K key, V value)
Associates the specified value with the specified key in this map.- Specified by:
put
in interfaceMap<K,V>
- Overrides:
put
in classAbstractMap<K,V>
- Parameters:
key
- Key with which the specified value is to be associated.value
- Value to be associated with the specified key. The value can't be null.- Returns:
- Previous value associated with specified key, or
null
if there was no mapping for key.
-
putAll
public void putAll(Map<? extends K,? extends V> map)
Copies all of the mappings from the specified map to this map.
-
clear
public void clear()
Removes all mappings from this map.
-
entrySet
public Set<Map.Entry<K,V>> entrySet()
Returns a set view of the mappings contained in this map.
-
equals
public boolean equals(Object object)
Compares the specified object with this map for equality.
-
hashCode
public int hashCode()
Returns the hash code value for this map.
-
toString
public String toString()
Returns a string representation of this map.- Overrides:
toString
in classAbstractMap<K,V>
-
-