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.
  • Field Details

    • table

      protected Entry extends Map.Entry<K,V>[] table
    • mask

      protected int mask
    • num_bindings

      protected int num_bindings
    • DEFAULT_INITIAL_SIZE

      public static final int DEFAULT_INITIAL_SIZE
      See Also:
  • Constructor Details

    • AbstractHashTable

      public AbstractHashTable()
    • AbstractHashTable

      public AbstractHashTable(int capacity)
  • Method Details

    • 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 the hash(Object) method if you want a different equivalence relation.
    • get

      public V get(Object key)
      Find value for given key. Return null if not found.
      Specified by:
      get in interface Map<Entry extends Map.Entry<K,V>,K>
      Overrides:
      get in class AbstractMap<K,V>
    • getNode

      public Entry getNode(Object key)
      Find Entry for given key. Return null if not found.
    • get

      public V get(Object key, V defaultValue)
      Find value for given key. Return defaultValue if not found.
    • getOrDefault

      public V getOrDefault(Object key, V defaultValue)
    • rehash

      protected void rehash()
    • put

      public V put(K key, V value)
      Specified by:
      put in interface Map<Entry extends Map.Entry<K,V>,K>
      Overrides:
      put in class AbstractMap<K,V>
    • put

      public V put(K key, int hash, V value)
    • remove

      public V remove(Object key)
      Specified by:
      remove in interface Map<Entry extends Map.Entry<K,V>,K>
      Overrides:
      remove in class AbstractMap<K,V>
    • clear

      public void clear()
      Specified by:
      clear in interface Map<Entry extends Map.Entry<K,V>,K>
      Overrides:
      clear in class AbstractMap<K,V>
    • size

      public int size()
      Specified by:
      size in interface Map<Entry extends Map.Entry<K,V>,K>
      Overrides:
      size in class AbstractMap<K,V>
    • entrySet

      public Set<Map.Entry<K,V>> entrySet()
      Specified by:
      entrySet in interface Map<Entry extends Map.Entry<K,V>,K>
      Specified by:
      entrySet in class AbstractMap<K,V>