Package org.glassfish.rmic.iiop
Class StaticStringsHash
java.lang.Object
org.glassfish.rmic.iiop.StaticStringsHash
StaticStringsHash takes an array of constant strings and
uses several different hash methods to try to find the
'best' one for that set. The set of methods is currently
fixed, but with a little work could be made extensible thru
subclassing.
The current set of methods is:
- length() - works well when all strings are different length.
- charAt(n) - works well when one offset into all strings is different.
- hashCode() - works well with larger arrays.
getKey(String)
method can be used to use the selected hash
method to produce a key. The method
string will contain
"length()", "charAt(n)", or "hashCode()", and is intended for use by
code generators.
The keys
array will contain the full set of unique keys.
The buckets
array will contain a set of arrays, one for
each key in the keys
, where buckets[x][y]
is an index into the strings
array.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
int[][]
Buckets for each key, where buckets[x][y] is an index into the strings[] array.private int[]
private static final int
private static final int
private static final int
private int
private static final int
private int
int[]
Unique hash keysprivate int
private static final int
private int
The method to invoke on String to produce the hash keyprivate int
String[]
The set of strings upon which the hash info is createdprivate int[]
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addKey
(int key) private int
int
Get a key for the given string using the selected hash method.private int
getKeys
(int methodKind) static void
Print an optimized 'contains' method for the argument stringsprivate void
resetKeys
(int keyKind) private void
-
Field Details
-
strings
The set of strings upon which the hash info is created -
keys
public int[] keysUnique hash keys -
buckets
public int[][] bucketsBuckets for each key, where buckets[x][y] is an index into the strings[] array. -
method
The method to invoke on String to produce the hash key -
length
private int length -
tempKeys
private int[] tempKeys -
bucketSizes
private int[] bucketSizes -
bucketCount
private int bucketCount -
maxDepth
private int maxDepth -
minStringLength
private int minStringLength -
keyKind
private int keyKind -
charAt
private int charAt -
LENGTH
private static final int LENGTH- See Also:
-
CHAR_AT
private static final int CHAR_AT- See Also:
-
HASH_CODE
private static final int HASH_CODE- See Also:
-
CHAR_AT_MAX_LINES
private static final int CHAR_AT_MAX_LINES- See Also:
-
CHAR_AT_MAX_CHARS
private static final int CHAR_AT_MAX_CHARS- See Also:
-
-
Constructor Details
-
StaticStringsHash
Constructor- Parameters:
strings
- the set of strings upon which to find an optimal hash method. Must not contain duplicates.
-
-
Method Details
-
getKey
Get a key for the given string using the selected hash method.- Parameters:
str
- the string to return a key for.- Returns:
- the key.
-
main
Print an optimized 'contains' method for the argument strings -
resetKeys
private void resetKeys(int keyKind) -
setMinStringLength
private void setMinStringLength() -
findUnusedKey
private int findUnusedKey() -
getKeys
private int getKeys(int methodKind) -
addKey
private void addKey(int key)
-