public abstract class AbstractHashTable<Entry extends java.util.Map.Entry<K,V>,K,V>
extends java.util.AbstractMap<K,V>
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_INITIAL_SIZE |
protected int |
mask |
protected int |
num_bindings |
protected Entry[] |
table |
Constructor and Description |
---|
AbstractHashTable() |
AbstractHashTable(int capacity) |
Modifier and Type | Method and Description |
---|---|
protected abstract Entry[] |
allocEntries(int n)
Allocate Entry[n].
|
void |
clear() |
java.util.Set<java.util.Map.Entry<K,V>> |
entrySet() |
V |
get(java.lang.Object key)
Find value for given key.
|
V |
get(java.lang.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(java.lang.Object key)
Find Entry for given key.
|
V |
getOrDefault(java.lang.Object key,
V defaultValue) |
int |
hash(java.lang.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(K key1,
java.lang.Object key2)
Compare two keys for equivalence.
|
protected boolean |
matches(java.lang.Object key,
int hash,
Entry node)
True if an Entry matches a key.
|
V |
put(K key,
int hash,
V value) |
V |
put(K key,
V value) |
protected void |
rehash() |
V |
remove(java.lang.Object key) |
protected abstract void |
setEntryNext(Entry entry,
Entry next)
Set next Entry in same hash-bucket.
|
int |
size() |
clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, values
protected int mask
protected int num_bindings
public static final int DEFAULT_INITIAL_SIZE
public AbstractHashTable()
public AbstractHashTable(int capacity)
protected abstract int getEntryHashCode(Entry entry)
protected abstract Entry getEntryNext(Entry entry)
protected abstract void setEntryNext(Entry entry, Entry next)
protected abstract Entry[] allocEntries(int n)
protected abstract Entry makeEntry(K key, int hash, V value)
public int hash(java.lang.Object key)
protected int hashToIndex(int hash)
protected boolean matches(java.lang.Object key, int hash, Entry node)
protected boolean matches(K key1, java.lang.Object key2)
hash(Object)
method if you want
a different equivalence relation.public V get(java.lang.Object key)
public Entry getNode(java.lang.Object key)
public V get(java.lang.Object key, V defaultValue)
protected void rehash()
public V remove(java.lang.Object key)
public void clear()
public int size()