org.jasig.portal.utils
Class SoftHashMap
java.lang.Object
java.util.AbstractMap
org.jasig.portal.utils.SoftHashMap
- All Implemented Interfaces:
- java.util.Map
public class SoftHashMap
- extends java.util.AbstractMap
A HashMap implementation that uses soft references,
leaving memory management up to the gc.
- Version:
- $Revision: 1.4.4.3 $
- Author:
- Peter Kharchenko (thanks to Dr. Kabutz on whose article the code is based)
Nested Class Summary |
private static class |
SoftHashMap.KeyReferencePair
An extension of a SoftReference that contains a key
by which it was mapped. |
Nested classes/interfaces inherited from interface java.util.Map |
java.util.Map.Entry |
Field Summary |
private java.util.LinkedList |
fifo
|
private edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap |
map
|
private int |
minSize
|
private java.lang.ref.ReferenceQueue |
removeQueue
|
Method Summary |
private void |
addToFIFO(java.lang.Object o)
|
private void |
cleanMap()
|
void |
clear()
|
java.util.Set |
entrySet()
|
java.lang.Object |
get(java.lang.Object key)
|
java.lang.Object |
put(java.lang.Object key,
java.lang.Object value)
|
java.lang.Object |
remove(java.lang.Object key)
|
int |
size()
|
Methods inherited from class java.util.AbstractMap |
clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, values |
Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, wait, wait, wait |
map
private final edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap map
fifo
private final java.util.LinkedList fifo
removeQueue
private final java.lang.ref.ReferenceQueue removeQueue
minSize
private int minSize
SoftHashMap
public SoftHashMap(int minSize)
- Construct a SoftHashMap
- Parameters:
minSize
- minimum number of objects to keep (approximate)
SoftHashMap
public SoftHashMap()
put
public java.lang.Object put(java.lang.Object key,
java.lang.Object value)
- Specified by:
put
in interface java.util.Map
- Overrides:
put
in class java.util.AbstractMap
get
public java.lang.Object get(java.lang.Object key)
- Specified by:
get
in interface java.util.Map
- Overrides:
get
in class java.util.AbstractMap
remove
public java.lang.Object remove(java.lang.Object key)
- Specified by:
remove
in interface java.util.Map
- Overrides:
remove
in class java.util.AbstractMap
size
public int size()
- Specified by:
size
in interface java.util.Map
- Overrides:
size
in class java.util.AbstractMap
clear
public void clear()
- Specified by:
clear
in interface java.util.Map
- Overrides:
clear
in class java.util.AbstractMap
entrySet
public java.util.Set entrySet()
- Specified by:
entrySet
in interface java.util.Map
- Specified by:
entrySet
in class java.util.AbstractMap
addToFIFO
private void addToFIFO(java.lang.Object o)
cleanMap
private void cleanMap()