org.apache.crimson.parser
Class SimpleHashtable

java.lang.Object
  extended byorg.apache.crimson.parser.SimpleHashtable
All Implemented Interfaces:
Enumeration

final class SimpleHashtable
extends Object
implements Enumeration

This class implements a special purpose hashtable. It works like a normal java.util.Hashtable except that:

  1. Keys to "get" are strings which are known to be interned, so that "==" is used instead of "String.equals". (Interning could be document-relative instead of global.)
  2. It's not synchronized, since it's to be used only by one thread at a time.
  3. The keys () enumerator allocates no memory, with live updates to the data disallowed.
  4. It's got fewer bells and whistles: fixed threshold and load factor, no JDK 1.2 collection support, only keys can be enumerated, things can't be removed, simpler inheritance; more.

The overall result is that it's less expensive to use these in performance-critical locations, in terms both of CPU and memory, than java.util.Hashtable instances. In this package it makes a significant difference when normalizing attributes, which is done for each start-element construct.


Nested Class Summary
private static class SimpleHashtable.Entry
          Hashtable collision list.
 
Field Summary
private  int count
           
private  SimpleHashtable.Entry current
           
private  int currentBucket
           
private static float loadFactor
           
private  SimpleHashtable.Entry[] table
           
private  int threshold
           
 
Constructor Summary
SimpleHashtable()
          Constructs a new, empty hashtable with a default capacity.
SimpleHashtable(int initialCapacity)
          Constructs a new, empty hashtable with the specified initial capacity.
 
Method Summary
 void clear()
           
 Object get(String key)
          Returns the value to which the specified key is mapped in this hashtable.
 Object getNonInterned(String key)
          Returns the value to which the specified key is mapped in this hashtable ... the key isn't necessarily interned, though.
 boolean hasMoreElements()
          Used to view this as an enumeration; returns true if there are more keys to be enumerated.
 Enumeration keys()
          Returns an enumeration of the keys in this hashtable.
 Object nextElement()
          Used to view this as an enumeration; returns the next key in the enumeration.
 Object put(Object key, Object value)
          Maps the specified key to the specified value in this hashtable.
private  void rehash()
          Increases the capacity of and internally reorganizes this hashtable, in order to accommodate and access its entries more efficiently.
 int size()
          Returns the number of keys in this hashtable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

table

private SimpleHashtable.Entry[] table

current

private SimpleHashtable.Entry current

currentBucket

private int currentBucket

count

private int count

threshold

private int threshold

loadFactor

private static final float loadFactor
See Also:
Constant Field Values
Constructor Detail

SimpleHashtable

public SimpleHashtable(int initialCapacity)
Constructs a new, empty hashtable with the specified initial capacity.

Parameters:
initialCapacity - the initial capacity of the hashtable.

SimpleHashtable

public SimpleHashtable()
Constructs a new, empty hashtable with a default capacity.

Method Detail

clear

public void clear()

size

public int size()
Returns the number of keys in this hashtable.

Returns:
the number of keys in this hashtable.

keys

public Enumeration keys()
Returns an enumeration of the keys in this hashtable.

Returns:
an enumeration of the keys in this hashtable.
See Also:
Enumeration

hasMoreElements

public boolean hasMoreElements()
Used to view this as an enumeration; returns true if there are more keys to be enumerated.

Specified by:
hasMoreElements in interface Enumeration
Returns:
true if and only if this enumeration object contains at least one more element to provide; false otherwise.

nextElement

public Object nextElement()
Used to view this as an enumeration; returns the next key in the enumeration.

Specified by:
nextElement in interface Enumeration
Returns:
the next element of this enumeration.

get

public Object get(String key)
Returns the value to which the specified key is mapped in this hashtable.


getNonInterned

public Object getNonInterned(String key)
Returns the value to which the specified key is mapped in this hashtable ... the key isn't necessarily interned, though.


rehash

private void rehash()
Increases the capacity of and internally reorganizes this hashtable, in order to accommodate and access its entries more efficiently. This method is called automatically when the number of keys in the hashtable exceeds this hashtable's capacity and load factor.


put

public Object put(Object key,
                  Object value)
Maps the specified key to the specified value in this hashtable. Neither the key nor the value can be null.

The value can be retrieved by calling the get method with a key that is equal to the original key.