Package gnu.kawa.util
Class AbstractHashTable<Entry extends java.util.Map.Entry<K,V>,K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- gnu.kawa.util.AbstractHashTable<Entry,K,V>
-
- All Implemented Interfaces:
java.util.Map<K,V>
- Direct Known Subclasses:
AbstractWeakHashTable,GeneralHashTable,Namespace,WeakIdentityHashMap
public abstract class AbstractHashTable<Entry extends java.util.Map.Entry<K,V>,K,V> extends java.util.AbstractMap<K,V>An abstract hash map from K to V. The entries are represented by an Entry type parameter.
-
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_INITIAL_SIZEprotected intmaskprotected intnum_bindingsprotected 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].voidclear()java.util.Set<java.util.Map.Entry<K,V>>entrySet()Vget(java.lang.Object key)Find value for given key.Vget(java.lang.Object key, V defaultValue)Find value for given key.protected abstract intgetEntryHashCode(Entry entry)Extract hash-code from Entry.protected abstract EntrygetEntryNext(Entry entry)Extract next Entry in same hash-bucket.EntrygetNode(java.lang.Object key)Find Entry for given key.VgetOrDefault(java.lang.Object key, V defaultValue)inthash(java.lang.Object key)Calculate hash code of a key.protected inthashToIndex(int hash)Map hash-code to bucket index in table.protected abstract EntrymakeEntry(K key, int hash, V value)Allocate a new node in the hash table.protected booleanmatches(java.lang.Object key, int hash, Entry node)True if an Entry matches a key.protected booleanmatches(K key1, java.lang.Object key2)Compare two keys for equivalence.Vput(K key, int hash, V value)Vput(K key, V value)protected voidrehash()Vremove(java.lang.Object key)protected abstract voidsetEntryNext(Entry entry, Entry next)Set next Entry in same hash-bucket.intsize()-
Methods inherited from class java.util.AbstractMap
clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, values
-
-
-
-
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(java.lang.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(java.lang.Object key, int hash, Entry node)True if an Entry matches a key.
-
matches
protected boolean matches(K key1, java.lang.Object key2)
Compare two keys for equivalence. Override this and thehash(Object)method if you want a different equivalence relation.
-
get
public V get(java.lang.Object key)
Find value for given key. Return null if not found.
-
getNode
public Entry getNode(java.lang.Object key)
Find Entry for given key. Return null if not found.
-
get
public V get(java.lang.Object key, V defaultValue)
Find value for given key. Return defaultValue if not found.
-
rehash
protected void rehash()
-
remove
public V remove(java.lang.Object key)
-
clear
public void clear()
-
size
public int size()
-
-