|
|||||||||
| Home >> All >> com >> go >> trove >> [ util overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
com.go.trove.util
Class SoftHashMap

java.lang.Objectjava.util.AbstractMap
com.go.trove.util.SoftHashMap
- All Implemented Interfaces:
- java.lang.Cloneable, java.util.Map
- Direct Known Subclasses:
- Cache
- public class SoftHashMap
- extends java.util.AbstractMap
- implements java.util.Map, java.lang.Cloneable
- extends java.util.AbstractMap
A Map that softly references its values and can be used as a simple cache. SoftHashMap is not thread-safe and must be wrapped with Collections.synchronizedMap to be made thread-safe. Most of the implementation for this class is ripped off from java.util.HashMap
Note: Softly referenced entries may be automatically removed during either accessor or mutator operations, possibly causing a concurrent modification to be detected. Therefore, even if multiple threads are only accessing this map, be sure to synchronize this map first. Also, do not rely on the value returned by size() when using an iterator from this map. The iterators may return less entries than the amount reported by size().
- Version:
- 22 , 9/07/00
| Nested Class Summary | |
private static class |
SoftHashMap.Entry
HashMap collision list entry. |
private class |
SoftHashMap.HashIterator
|
(package private) static class |
SoftHashMap.Null
This allows null references to be saved into SoftHashMap and allow entries to still be garbage collected. |
| Nested classes inherited from class java.util.AbstractMap |
|
| Field Summary | |
private int |
mCount
The total number of mappings in the hash table. |
private java.util.Set |
mEntrySet
|
private java.util.Set |
mKeySet
|
private float |
mLoadFactor
The load factor for the hashtable. |
private int |
mModCount
The number of times this HashMap has been structurally modified Structural modifications are those that change the number of mappings in the HashMap or otherwise modify its internal structure (e.g., rehash). |
private SoftHashMap.Entry[] |
mTable
The hash table data. |
private int |
mThreshold
The table is rehashed when its size exceeds this threshold. |
private java.util.Collection |
mValues
|
| Fields inherited from class java.util.AbstractMap |
|
| Constructor Summary | |
SoftHashMap()
Constructs a new, empty map with a default capacity and load factor, which is 0.75. |
|
SoftHashMap(int initialCapacity)
Constructs a new, empty map with the specified initial capacity and default load factor, which is 0.75. |
|
SoftHashMap(int initialCapacity,
float loadFactor)
Constructs a new, empty map with the specified initial capacity and the specified load factor. |
|
SoftHashMap(java.util.Map t)
Constructs a new map with the same mappings as the given map. |
|
| Method Summary | |
private void |
cleanup()
Scans the contents of this map, removing all entries that have a cleared soft value. |
void |
clear()
Removes all mappings from this map. |
java.lang.Object |
clone()
Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned. |
boolean |
containsKey(java.lang.Object key)
Returns true if this map contains a mapping for the specified key. |
boolean |
containsValue(java.lang.Object value)
Returns true if this map maps one or more keys to the specified value. |
java.util.Set |
entrySet()
Returns a collection view of the mappings contained in this map. |
java.lang.Object |
get(java.lang.Object key)
Returns the value to which this map maps the specified key. |
private java.util.Iterator |
getHashIterator(int type)
|
boolean |
isEmpty()
Returns true if this map contains no key-value mappings. |
java.util.Set |
keySet()
Returns a set view of the keys contained in this map. |
java.lang.Object |
put(java.lang.Object key,
java.lang.Object value)
Associates the specified value with the specified key in this map. |
void |
putAll(java.util.Map t)
Copies all of the mappings from the specified map to this one. |
private void |
rehash()
Rehashes the contents of this map into a new HashMap instance with a larger capacity. |
java.lang.Object |
remove(java.lang.Object key)
Removes the mapping for this key from this map if present. |
int |
size()
Returns the number of key-value mappings in this map, but this value may be larger than actual amount of entries produced by an iterator. |
java.lang.String |
toString()
Returns a String representation of this map. |
java.util.Collection |
values()
Returns a collection view of the values contained in this map. |
| Methods inherited from class java.util.AbstractMap |
equals, hashCode |
| Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface java.util.Map |
equals, hashCode |
| Field Detail |
mTable
private transient SoftHashMap.Entry[] mTable
- The hash table data.
mCount
private transient int mCount
- The total number of mappings in the hash table.
mThreshold
private int mThreshold
- The table is rehashed when its size exceeds this threshold. (The
value of this field is (int)(capacity * loadFactor).)
mLoadFactor
private float mLoadFactor
- The load factor for the hashtable.
mModCount
private transient int mModCount
- The number of times this HashMap has been structurally modified
Structural modifications are those that change the number of mappings in
the HashMap or otherwise modify its internal structure (e.g.,
rehash). This field is used to make iterators on Collection-views of
the HashMap fail-fast. (See ConcurrentModificationException).
mKeySet
private transient java.util.Set mKeySet
mEntrySet
private transient java.util.Set mEntrySet
mValues
private transient java.util.Collection mValues
| Constructor Detail |
SoftHashMap
public SoftHashMap(int initialCapacity,
float loadFactor)
- Constructs a new, empty map with the specified initial
capacity and the specified load factor.
SoftHashMap
public SoftHashMap(int initialCapacity)
- Constructs a new, empty map with the specified initial capacity
and default load factor, which is 0.75.
SoftHashMap
public SoftHashMap()
- Constructs a new, empty map with a default capacity and load
factor, which is 0.75.
SoftHashMap
public SoftHashMap(java.util.Map t)
- Constructs a new map with the same mappings as the given map. The
map is created with a capacity of twice the number of mappings in
the given map or 11 (whichever is greater), and a default load factor,
which is 0.75.
| Method Detail |
size
public int size()
- Returns the number of key-value mappings in this map, but this value
may be larger than actual amount of entries produced by an iterator.
- Specified by:
sizein interfacejava.util.Map
isEmpty
public boolean isEmpty()
- Returns true if this map contains no key-value mappings.
- Specified by:
isEmptyin interfacejava.util.Map
containsValue
public boolean containsValue(java.lang.Object value)
- Returns true if this map maps one or more keys to the
specified value.
- Specified by:
containsValuein interfacejava.util.Map
containsKey
public boolean containsKey(java.lang.Object key)
- Returns true if this map contains a mapping for the specified
key.
- Specified by:
containsKeyin interfacejava.util.Map
get
public java.lang.Object get(java.lang.Object key)
- Returns the value to which this map maps the specified key. Returns
null if the map contains no mapping for this key. A return
value of null does not necessarily indicate that the
map contains no mapping for the key; it's also possible that the map
explicitly maps the key to null. The containsKey
operation may be used to distinguish these two cases.
- Specified by:
getin interfacejava.util.Map
cleanup
private void cleanup()
- Scans the contents of this map, removing all entries that have a
cleared soft value.
rehash
private void rehash()
- Rehashes the contents of this map into a new HashMap instance
with a larger capacity. This method is called automatically when the
number of keys in this map exceeds its capacity and load factor.
put
public java.lang.Object put(java.lang.Object key, java.lang.Object value)
- Associates the specified value with the specified key in this map.
If the map previously contained a mapping for this key, the old
value is replaced.
- Specified by:
putin interfacejava.util.Map
remove
public java.lang.Object remove(java.lang.Object key)
- Removes the mapping for this key from this map if present.
- Specified by:
removein interfacejava.util.Map
putAll
public void putAll(java.util.Map t)
- Copies all of the mappings from the specified map to this one.
These mappings replace any mappings that this map had for any of the
keys currently in the specified Map.
- Specified by:
putAllin interfacejava.util.Map
clear
public void clear()
- Removes all mappings from this map.
- Specified by:
clearin interfacejava.util.Map
clone
public java.lang.Object clone()
- Returns a shallow copy of this HashMap instance: the keys and
values themselves are not cloned.
keySet
public java.util.Set keySet()
- Returns a set view of the keys contained in this map. The set is
backed by the map, so changes to the map are reflected in the set, and
vice-versa. The set supports element removal, which removes the
corresponding mapping from this map, via the Iterator.remove,
Set.remove, removeAll, retainAll, and
clear operations. It does not support the add or
addAll operations.
- Specified by:
keySetin interfacejava.util.Map
values
public java.util.Collection values()
- Returns a collection view of the values contained in this map. The
collection is backed by the map, so changes to the map are reflected in
the collection, and vice-versa. The collection supports element
removal, which removes the corresponding mapping from this map, via the
Iterator.remove, Collection.remove,
removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
- Specified by:
valuesin interfacejava.util.Map
entrySet
public java.util.Set entrySet()
- Returns a collection view of the mappings contained in this map. Each
element in the returned collection is a Map.Entry. The
collection is backed by the map, so changes to the map are reflected in
the collection, and vice-versa. The collection supports element
removal, which removes the corresponding mapping from the map, via the
Iterator.remove, Collection.remove,
removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
- Specified by:
entrySetin interfacejava.util.Map
toString
public java.lang.String toString()
- Description copied from class:
java.util.AbstractMap - Returns a String representation of this map. This is a listing of the
map entries (which are specified in Map.Entry as being
getKey() + "=" + getValue()), separated by a comma and space (", "), and surrounded by braces ('{' and '}'). This implementation uses a StringBuffer and iterates over the entrySet to build the String. Note that this can fail with an exception if underlying keys or values complete abruptly in toString().
getHashIterator
private java.util.Iterator getHashIterator(int type)
|
|||||||||
| Home >> All >> com >> go >> trove >> [ util overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC