org.apache.xerces.util
Class SymbolHash

java.lang.Object
  |
  +--org.apache.xerces.util.SymbolHash

public class SymbolHash
extends java.lang.Object

This class is an unsynchronized hash table primary used for String to Object mapping.

The hash code uses the same algorithm as SymbolTable class.

Version:
$Id: SymbolHash.java 1357381 2012-07-04 19:56:10Z mrglavas $
Author:
Elena Litani

Inner Class Summary
protected static class SymbolHash.Entry
          This class is a key table entry.
 
Field Summary
protected  SymbolHash.Entry[] fBuckets
          Buckets.
protected  int[] fHashMultipliers
          Array of randomly selected hash function multipliers or null if the default String.hashCode() function should be used.
protected  int fNum
          Number of elements.
protected  int fTableSize
          Actual table size
protected static int MAX_HASH_COLLISIONS
          Maximum hash collisions per bucket.
protected static int MULTIPLIERS_MASK
           
protected static int MULTIPLIERS_SIZE
           
protected static int TABLE_SIZE
          Default table size.
 
Constructor Summary
SymbolHash()
          Constructs a key table with the default size.
SymbolHash(int size)
          Constructs a key table with a given size.
 
Method Summary
 void clear()
          Remove all key/value association.
 java.lang.Object get(java.lang.Object key)
          Get the value associated with the given key.
 java.lang.Object[] getEntries()
          Return key/value pairs of all entries in the map
 int getLength()
          Get the number of key/value pairs stored in this table.
 int getValues(java.lang.Object[] elements, int from)
          Add all values to the given array.
protected  int hash(java.lang.Object key)
          Returns a hashcode value for the specified key.
 SymbolHash makeClone()
          Make a clone of this object.
 void put(java.lang.Object key, java.lang.Object value)
          Adds the key/value mapping to the key table.
protected  void rebalance()
          Randomly selects a new hash function and reorganizes this SymbolHash in order to more evenly distribute its entries across the table.
protected  void rehash()
          Increases the capacity of and internally reorganizes this SymbolHash, in order to accommodate and access its entries more efficiently.
protected  SymbolHash.Entry search(java.lang.Object key, int bucket)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TABLE_SIZE

protected static final int TABLE_SIZE
Default table size.

MAX_HASH_COLLISIONS

protected static final int MAX_HASH_COLLISIONS
Maximum hash collisions per bucket.

MULTIPLIERS_SIZE

protected static final int MULTIPLIERS_SIZE

MULTIPLIERS_MASK

protected static final int MULTIPLIERS_MASK

fTableSize

protected int fTableSize
Actual table size

fBuckets

protected SymbolHash.Entry[] fBuckets
Buckets.

fNum

protected int fNum
Number of elements.

fHashMultipliers

protected int[] fHashMultipliers
Array of randomly selected hash function multipliers or null if the default String.hashCode() function should be used.
Constructor Detail

SymbolHash

public SymbolHash()
Constructs a key table with the default size.

SymbolHash

public SymbolHash(int size)
Constructs a key table with a given size.
Parameters:
size - the size of the key table.
Method Detail

put

public void put(java.lang.Object key,
                java.lang.Object value)
Adds the key/value mapping to the key table. If the key already exists, the previous value associated with this key is overwritten by the new value.
Parameters:
key -  
value -  

get

public java.lang.Object get(java.lang.Object key)
Get the value associated with the given key.
Parameters:
key -  
Returns:
the value associated with the given key.

getLength

public int getLength()
Get the number of key/value pairs stored in this table.
Returns:
the number of key/value pairs stored in this table.

getValues

public int getValues(java.lang.Object[] elements,
                     int from)
Add all values to the given array. The array must have enough entry.
Parameters:
elements - the array to store the elements
from - where to start store element in the array
Returns:
number of elements copied to the array

getEntries

public java.lang.Object[] getEntries()
Return key/value pairs of all entries in the map

makeClone

public SymbolHash makeClone()
Make a clone of this object.

clear

public void clear()
Remove all key/value association. This tries to save a bit of GC'ing by at least keeping the fBuckets array around.

search

protected SymbolHash.Entry search(java.lang.Object key,
                                  int bucket)

hash

protected int hash(java.lang.Object key)
Returns a hashcode value for the specified key.
Parameters:
key - The key to hash.

rehash

protected void rehash()
Increases the capacity of and internally reorganizes this SymbolHash, in order to accommodate and access its entries more efficiently. This method is called automatically when the number of keys in the SymbolHash exceeds its number of buckets.

rebalance

protected void rebalance()
Randomly selects a new hash function and reorganizes this SymbolHash in order to more evenly distribute its entries across the table. This method is called automatically when the number keys in one of the SymbolHash's buckets exceeds MAX_HASH_COLLISIONS.


Copyright 1999-2018 The Apache Software Foundation. All Rights Reserved.