Package gnu.kawa.util
Class AbstractHashTable<Entry extends Map.Entry<K,V>,K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- gnu.kawa.util.AbstractHashTable<Entry,K,V>
-
- All Implemented Interfaces:
Map<K,V>
- Direct Known Subclasses:
AbstractWeakHashTable
,GeneralHashTable
,Namespace
,WeakIdentityHashMap
public abstract class AbstractHashTable<Entry extends Map.Entry<K,V>,K,V> extends AbstractMap<K,V>
An abstract hash map from K to V. The entries are represented by an Entry type parameter.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.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 static int
DEFAULT_INITIAL_SIZE
protected int
mask
protected int
num_bindings
protected Entry[]
table
-
Constructor Summary
Constructors Constructor Description AbstractHashTable()
AbstractHashTable(int capacity)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract Entry[]
allocEntries(int n)
Allocate Entry[n].void
clear()
Set<Map.Entry<K,V>>
entrySet()
V
get(Object key)
Find value for given key.V
get(Object key, V defaultValue)
Find value for given key.protected abstract int
getEntryHashCode(Entry entry)
Extract hash-code from Entry.protected abstract Entry
getEntryNext(Entry entry)
Extract next Entry in same hash-bucket.Entry
getNode(Object key)
Find Entry for given key.V
getOrDefault(Object key, V defaultValue)
int
hash(Object key)
Calculate hash code of a key.protected int
hashToIndex(int hash)
Map hash-code to bucket index in table.protected abstract Entry
makeEntry(K key, int hash, V value)
Allocate a new node in the hash table.protected boolean
matches(Object key, int hash, Entry node)
True if an Entry matches a key.protected boolean
matches(K key1, Object key2)
Compare two keys for equivalence.V
put(K key, int hash, V value)
V
put(K key, V value)
protected void
rehash()
V
remove(Object key)
protected abstract void
setEntryNext(Entry entry, Entry next)
Set next Entry in same hash-bucket.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
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Field Detail
-
mask
protected int mask
-
num_bindings
protected int num_bindings
-
DEFAULT_INITIAL_SIZE
public static final int DEFAULT_INITIAL_SIZE
- See Also:
- Constant Field Values
-
-
Method Detail
-
getEntryHashCode
protected abstract int getEntryHashCode(Entry entry)
Extract hash-code from Entry.
-
getEntryNext
protected abstract Entry getEntryNext(Entry entry)
Extract next Entry in same hash-bucket.
-
setEntryNext
protected abstract void setEntryNext(Entry entry, Entry next)
Set next Entry in same hash-bucket.
-
allocEntries
protected abstract Entry[] allocEntries(int n)
Allocate Entry[n].
-
makeEntry
protected abstract Entry makeEntry(K key, int hash, V value)
Allocate a new node in the hash table.
-
hash
public int hash(Object key)
Calculate hash code of a key.
-
hashToIndex
protected int hashToIndex(int hash)
Map hash-code to bucket index in table.
-
matches
protected boolean matches(Object key, int hash, Entry node)
True if an Entry matches a key.
-
matches
protected boolean matches(K key1, Object key2)
Compare two keys for equivalence. Override this and thehash(Object)
method if you want a different equivalence relation.
-
get
public V get(Object key, V defaultValue)
Find value for given key. Return defaultValue if not found.
-
rehash
protected void rehash()
-
clear
public void clear()
-
size
public int size()
-
-