APIdia Launch Partner
Top Description Fields Constructors Methods
com.sun.org.apache.xml.internal.dtm.ref

public Class DTMStringPool

extends Object
Class Inheritance
Known Direct Subclasses
com.sun.org.apache.xml.internal.dtm.ref.CustomStringPool, com.sun.org.apache.xml.internal.dtm.ref.DTMSafeStringPool
Imports
java.util.ArrayList, .HashMap, .List

DTMStringPool is an "interning" mechanism for strings. It will create a stable 1:1 mapping between a set of string values and a set of integer index values, so the integers can be used to reliably and uniquely identify (and when necessary retrieve) the strings.

Design Priorities:

Implementation detail: A standard Hashtable is relatively inefficient when looking up primitive int values, especially when we're already maintaining an int-to-string vector. So I'm maintaining a simple hash chain within this class.

Note

There is nothing in the code that has a real dependency upon String. It would work with any object type that implements reliable .hashCode() and .equals() operations. The API enforces Strings because it's safer that way, but this could trivially be turned into a general ObjectPool if one was needed.

Status: Passed basic test in main().

Field Summary

Modifier and TypeField and Description
pack-priv List<String>
pack-priv HashMap<String, Integer>
public static final int

Constructor Summary

AccessConstructor and Description
public
DTMStringPool(int
The size of the hash chain vector
chainSize
)

Create a DTMStringPool using the given chain size

public

Method Summary

Modifier and TypeMethod and Description
public static void
_main(String[] args)

Command-line unit test driver.

public String
indexToString(int i)

Returns: string whose value is uniquely identified by this integer index.

public void
public int
stringToIndex(String s)

Returns: integer index uniquely identifying the value of this string.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

m_intToStringback to summary
pack-priv List<String> m_intToString
m_stringToIntback to summary
pack-priv HashMap<String, Integer> m_stringToInt
NULLback to summary
public static final int NULL

Constructor Detail

DTMStringPoolback to summary
public DTMStringPool(int chainSize)

Create a DTMStringPool using the given chain size

Parameters
chainSize:int

The size of the hash chain vector

DTMStringPoolback to summary
public DTMStringPool()

Method Detail

_mainback to summary
public static void _main(String[] args)

Command-line unit test driver. This test relies on the fact that this version of the pool assigns indices consecutively, starting from zero, as new unique strings are encountered.

indexToStringback to summary
public String indexToString(int i) throws IndexOutOfBoundsException
Returns:String

string whose value is uniquely identified by this integer index.

Exceptions
IndexOutOfBoundsException:
if index doesn't map to a string.
removeAllElementsback to summary
public void removeAllElements()
stringToIndexback to summary
public int stringToIndex(String s)
Returns:int

integer index uniquely identifying the value of this string.