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:
java.util.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 Classes Modifier and Type Class Description static classAbstractWeakHashTable.WEntry<K,V>
-
Field Summary
-
Fields inherited from class gnu.kawa.util.AbstractHashTable
DEFAULT_INITIAL_SIZE, mask, num_bindings, table
-
-
Constructor Summary
Constructors Constructor Description AbstractWeakHashTable()AbstractWeakHashTable(int capacity)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected AbstractWeakHashTable.WEntry<K,V>[]allocEntries(int n)Allocate Entry[n].protected voidcleanup()Vget(java.lang.Object key, V defaultValue)Find value for given key.protected intgetEntryHashCode(AbstractWeakHashTable.WEntry<K,V> entry)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 KgetKeyFromValue(V value)protected VgetValueIfMatching(AbstractWeakHashTable.WEntry<K,V> node, java.lang.Object key)inthash(java.lang.Object key)Calculate hash code of a key.protected AbstractWeakHashTable.WEntry<K,V>makeEntry(K key, int hash, V value)Allocate a new node in the hash table.Vput(K key, V value)protected voidsetEntryNext(AbstractWeakHashTable.WEntry<K,V> entry, AbstractWeakHashTable.WEntry<K,V> next)Set next Entry in same hash-bucket.protected booleanvaluesEqual(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
-
-
-
-
Method Detail
-
getEntryHashCode
protected int getEntryHashCode(AbstractWeakHashTable.WEntry<K,V> entry)
Description copied from class:AbstractHashTableExtract hash-code from Entry.- Specified by:
getEntryHashCodein classAbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
-
getEntryNext
protected AbstractWeakHashTable.WEntry<K,V> getEntryNext(AbstractWeakHashTable.WEntry<K,V> entry)
Description copied from class:AbstractHashTableExtract next Entry in same hash-bucket.- Specified by:
getEntryNextin 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:AbstractHashTableSet next Entry in same hash-bucket.- Specified by:
setEntryNextin classAbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
-
allocEntries
protected AbstractWeakHashTable.WEntry<K,V>[] allocEntries(int n)
Description copied from class:AbstractHashTableAllocate Entry[n].- Specified by:
allocEntriesin classAbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
-
getValueIfMatching
protected V getValueIfMatching(AbstractWeakHashTable.WEntry<K,V> node, java.lang.Object key)
-
get
public V get(java.lang.Object key, V defaultValue)
Description copied from class:AbstractHashTableFind value for given key. Return defaultValue if not found.- Overrides:
getin classAbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
-
hash
public int hash(java.lang.Object key)
Description copied from class:AbstractHashTableCalculate hash code of a key.- Overrides:
hashin classAbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
-
makeEntry
protected AbstractWeakHashTable.WEntry<K,V> makeEntry(K key, int hash, V value)
Description copied from class:AbstractHashTableAllocate a new node in the hash table.- Specified by:
makeEntryin classAbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
-
put
public V put(K key, V value)
- Specified by:
putin interfacejava.util.Map<K,V>- Overrides:
putin classAbstractHashTable<AbstractWeakHashTable.WEntry<K,V>,K,V>
-
cleanup
protected void cleanup()
-
-