## org.apache.xerces.util
Class SymbolTable

    java.lang.Object
      org.apache.xerces.util.SymbolTable

Direct Known Subclasses:
  ShadowedSymbolTable, SynchronizedSymbolTable

public class SymbolTable
extends java.lang.Object

This class is a symbol table implementation that guarantees that strings used as identifiers are unique references. Multiple calls to `addSymbol` will always return the same string reference.

The symbol table performs the same task as `String.intern()` with the following differences:

- A new string object does not need to be created in order to retrieve a unique reference. Symbols can be added by using a series of characters in a character array.
- Users of the symbol table can provide their own symbol hashing implementation. For example, a simple string hashing algorithm may fail to produce a balanced set of hashcodes for symbols that are mostly unique. Strings with similar leading characters are especially prone to this poor hashing behavior.

Version:
  $Id: SymbolTable.java,v 1.7 2002/02/07 22:15:09 neilg Exp $
Author:
  Andy Clark
See Also:
  `SymbolHash`

Nested Class Summary
`protected static class` `SymbolTable.Entry` This class is a symbol table entry.

Field Summary
`protected SymbolTable.Entry[]` `fBuckets` Buckets.
`protected int` `fTableSize`
`protected static int` `TABLE_SIZE` Default table size.

Constructor Summary
`SymbolTable()` Constructs a symbol table with a default number of buckets.
`SymbolTable(int tableSize)` Constructs a symbol table with a specified number of buckets.

Method Summary
`java.lang.String` `addSymbol(char[] buffer, int offset, int length)` Adds the specified symbol to the symbol table and returns a reference to the unique symbol.
`java.lang.String` `addSymbol(java.lang.String symbol)` Adds the specified symbol to the symbol table and returns a reference to the unique symbol.
`boolean` `containsSymbol(char[] buffer, int offset, int length)` Returns true if the symbol table already contains the specified symbol.
`boolean` `containsSymbol(java.lang.String symbol)` Returns true if the symbol table already contains the specified symbol.
`int` `hash(char[] buffer, int offset, int length)` Returns a hashcode value for the specified symbol information.
`int` `hash(java.lang.String symbol)` Returns a hashcode value for the specified symbol.

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.

  See Also:
    Constant Field Values

### fBuckets

    protected SymbolTable.Entry[] fBuckets

  Buckets.

### fTableSize

    protected int fTableSize

Constructor Detail

### SymbolTable

    public SymbolTable()

  Constructs a symbol table with a default number of buckets.

### SymbolTable

    public SymbolTable(int tableSize)

  Constructs a symbol table with a specified number of buckets.

Method Detail

### addSymbol

    public java.lang.String addSymbol(java.lang.String symbol)

  Adds the specified symbol to the symbol table and returns a reference to the unique symbol. If the symbol already exists, the previous symbol reference is returned instead, in order guarantee that symbol references remain unique.

  Parameters:
    `symbol` - The new symbol.

### addSymbol

    public java.lang.String addSymbol(char[] buffer,
                                      int offset,
                                      int length)

  Adds the specified symbol to the symbol table and returns a reference to the unique symbol. If the symbol already exists, the previous symbol reference is returned instead, in order guarantee that symbol references remain unique.

  Parameters:
    `buffer` - The buffer containing the new symbol.
    `offset` - The offset into the buffer of the new symbol.
    `length` - The length of the new symbol in the buffer.

### hash

    public int hash(java.lang.String symbol)

  Returns a hashcode value for the specified symbol. The value returned by this method must be identical to the value returned by the `hash(char[],int,int)` method when called with the character array that comprises the symbol string.

  Parameters:
    `symbol` - The symbol to hash.

### hash

    public int hash(char[] buffer,
                    int offset,
                    int length)

  Returns a hashcode value for the specified symbol information. The value returned by this method must be identical to the value returned by the `hash(String)` method when called with the string object created from the symbol information.

  Parameters:
    `buffer` - The character buffer containing the symbol.
    `offset` - The offset into the character buffer of the start of the symbol.
    `length` - The length of the symbol.

### containsSymbol

    public boolean containsSymbol(java.lang.String symbol)

  Returns true if the symbol table already contains the specified symbol.

  Parameters:
    `symbol` - The symbol to look for.

### containsSymbol

    public boolean containsSymbol(char[] buffer,
                                  int offset,
                                  int length)

  Returns true if the symbol table already contains the specified symbol.

  Parameters:
    `buffer` - The buffer containing the symbol to look for.
    `offset` - The offset into the buffer.
    `length` - The length of the symbol in the buffer.

Copyright © 1999-2004 Apache XML Project. All Rights Reserved.