Package gnu.kawa.util
Class AbstractWeakHashTable<K,V>
java.lang.Object
java.util.AbstractMap<K,V>
gnu.kawa.util.AbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
gnu.kawa.util.AbstractWeakHashTable<K,V>
- All Implemented Interfaces:
Map<K,
V>
public abstract class AbstractWeakHashTable<K,V>
extends AbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
A hash table with weakly referenced keys and values.
Unlike java.util.WeakHashMap, this is useful when a
value object contain a strong reference to the corresponding keys.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,
V>, AbstractMap.SimpleImmutableEntry<K, V> -
Field Summary
Fields inherited from class gnu.kawa.util.AbstractHashTable
DEFAULT_INITIAL_SIZE, mask, num_bindings, table
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected AbstractWeakHashTable.WEntry<K,
V>[] allocEntries
(int n) Allocate Entry[n].protected void
cleanup()
Find value for given key.protected int
Extract hash-code from Entry.protected AbstractWeakHashTable.WEntry
<K, V> getEntryNext
(AbstractWeakHashTable.WEntry<K, V> entry) Extract next Entry in same hash-bucket.protected abstract K
getKeyFromValue
(V value) protected V
getValueIfMatching
(AbstractWeakHashTable.WEntry<K, V> node, Object key) int
Calculate hash code of a key.protected AbstractWeakHashTable.WEntry
<K, V> Allocate a new node in the hash table.protected void
setEntryNext
(AbstractWeakHashTable.WEntry<K, V> entry, AbstractWeakHashTable.WEntry<K, V> next) Set next Entry in same hash-bucket.protected boolean
valuesEqual
(V oldValue, V newValue) Methods inherited from class gnu.kawa.util.AbstractHashTable
clear, entrySet, get, getNode, getOrDefault, hashToIndex, matches, matches, put, rehash, remove, 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
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
AbstractWeakHashTable
public AbstractWeakHashTable() -
AbstractWeakHashTable
public AbstractWeakHashTable(int capacity)
-
-
Method Details
-
getKeyFromValue
-
getEntryHashCode
Description copied from class:AbstractHashTable
Extract hash-code from Entry.- Specified by:
getEntryHashCode
in classAbstractHashTable<AbstractWeakHashTable.WEntry<K,
V>, K, V>
-
getEntryNext
Description copied from class:AbstractHashTable
Extract next Entry in same hash-bucket.- Specified by:
getEntryNext
in classAbstractHashTable<AbstractWeakHashTable.WEntry<K,
V>, K, V>
-
setEntryNext
protected void setEntryNext(AbstractWeakHashTable.WEntry<K, V> entry, AbstractWeakHashTable.WEntry<K, V> next) Description copied from class:AbstractHashTable
Set next Entry in same hash-bucket.- Specified by:
setEntryNext
in classAbstractHashTable<AbstractWeakHashTable.WEntry<K,
V>, K, V>
-
allocEntries
Description copied from class:AbstractHashTable
Allocate Entry[n].- Specified by:
allocEntries
in classAbstractHashTable<AbstractWeakHashTable.WEntry<K,
V>, K, V>
-
getValueIfMatching
-
get
Description copied from class:AbstractHashTable
Find value for given key. Return defaultValue if not found.- Overrides:
get
in classAbstractHashTable<AbstractWeakHashTable.WEntry<K,
V>, K, V>
-
hash
Description copied from class:AbstractHashTable
Calculate hash code of a key.- Overrides:
hash
in classAbstractHashTable<AbstractWeakHashTable.WEntry<K,
V>, K, V>
-
valuesEqual
-
makeEntry
Description copied from class:AbstractHashTable
Allocate a new node in the hash table.- Specified by:
makeEntry
in classAbstractHashTable<AbstractWeakHashTable.WEntry<K,
V>, K, V>
-
put
-
cleanup
protected void cleanup()
-