public class Hashtable
extends java.lang.Object
null
object can be used as a key or as a value.
An instance of Hashtable
has two parameters that
affect its efficiency: its capacity and its load
factor. The load factor should be between 0.0 and 1.0. When
the number of entries in the hashtable exceeds the product of the
load factor and the current capacity, the capacity is increased by
calling the rehash
method. Larger load factors use
memory more efficiently, at the expense of larger expected time
per lookup.
If many entries are to be made into a Hashtable
,
creating it with a sufficiently large capacity may allow the
entries to be inserted more efficiently than letting it perform
automatic rehashing as needed to grow the table.
This example creates a hashtable of numbers. It uses the names of the numbers as keys:
Hashtable numbers = new Hashtable(3); numbers.put("one", Convert.toString(1)); numbers.put("two", Convert.toString(2)); numbers.put("three", Convert.toString(3));
To retrieve a number, use the following code:
String n = (String)numbers.get("two"); if (n != null) // "two = " + Convert.toInt(n);This Hashtable class does not support Generics; use the HashMap class instead.
Modifier and Type | Class and Description |
---|---|
protected static class |
Hashtable.Entry
Hashtable collision list.
|
Modifier and Type | Field and Description |
---|---|
boolean |
allowDuplicateKeys
Setting this to true will allow the hashtable to have more than one key with the same value.
|
int |
collisions
Computes the number of collisions for a set of inserts.
|
protected Hashtable.Entry[] |
table
The hash table data.
|
Constructor and Description |
---|
Hashtable(int initialCapacity)
Constructs a new, empty hashtable with the specified initial capacity
and default load factor of 0.75f.
|
Hashtable(int initialCapacity,
double loadFactor)
Constructs a new, empty hashtable with the specified initial
capacity and the specified load factor.
|
Hashtable(java.lang.Object[] keys,
java.lang.Object values)
Creates a Hashtable with the given keys and values.
|
Hashtable(java.lang.String res)
Constructs a new hashtable, parsing the elements from the given String.
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
Clears this hashtable so that it contains no keys.
|
void |
copyInto(Hashtable target)
Copies the keys and values of this Hashtable into the given Hashtable.
|
java.lang.StringBuffer |
dumpKeysValues(java.lang.StringBuffer sb,
java.lang.String keyvalueSeparator,
java.lang.String lineSeparator)
Dumps the keys and values into the given StringBuffer.
|
boolean |
exists(java.lang.Object key)
Checks if the value with the specified key is mapped in this hashtable.
|
java.lang.Object |
get(int hash)
Returns the value to which the specified hash is mapped in this hashtable.
|
java.lang.Object |
get(int hash,
java.lang.Object defaultValue)
Returns the value to which the specified key is mapped in this hashtable.
|
java.lang.Object |
get(java.lang.Object key)
Returns the value to which the specified key is mapped in this hashtable.
|
java.lang.Object |
get(java.lang.Object key,
java.lang.Object defaultValue)
Returns the value to which the specified key is mapped in this hashtable.
|
Vector |
getKeys()
Return a Vector of the keys in the Hashtable.
|
Vector |
getKeyValuePairs(java.lang.String separator)
Return a Vector with pairs in the form
key=value from the Hashtable. |
java.lang.String |
getString(java.lang.Object key)
Returns the value to which the specified key is mapped in this hashtable as a String.
|
java.lang.String |
getString(java.lang.Object key,
java.lang.String defaultValue)
Returns the value to which the specified key is mapped in this hashtable as a String.
|
Vector |
getValues()
Return a Vector of the values in the Hashtable.
|
java.lang.Object |
put(int hash,
java.lang.Object value)
Maps the specified
key to the specified
value in this hashtable. |
java.lang.Object |
put(java.lang.Object key,
java.lang.Object value)
Maps the specified
key to the specified
value in this hashtable. |
protected void |
rehash()
Rehashes the contents of the hashtable into a hashtable with a
larger capacity.
|
java.lang.Object |
remove(int hash)
Removes the key (and its corresponding value) from this
hashtable.
|
java.lang.Object |
remove(java.lang.Object key)
Removes the key (and its corresponding value) from this
hashtable.
|
int |
size()
Returns the number of keys in this hashtable.
|
protected Hashtable.Entry[] table
public int collisions
int max = 0xFFFFFFF; for (int h = 5; ; h++) { IntHashtable ht = new IntHashtable(h); ht.put("nbsp".hashCode(),' '); ht.put("shy".hashCode(),''); ht.put("quot".hashCode(),'"'); ... if (ht.collisions < max) { Vm.debug("h: "+h+" colli: "+ht.collisions); max = ht.collisions; if (max == 0) break; } }
public boolean allowDuplicateKeys
public Hashtable(int initialCapacity)
initialCapacity
- The number of elements you think the hashtable will end with. The hashtable will grow if necessary, but using
a number near or above the final size can improve performance.public Hashtable(int initialCapacity, double loadFactor)
initialCapacity
- The number of elements you think the hashtable will end with. The hashtable will grow if necessary, but using
a number near or above the final size can improve performance.loadFactor
- a number between 0.0 and 1.0.public Hashtable(java.lang.String res)
// save these two lines in a file named EN.txt: Message = Message TestMsg = This is a test Exit = Exit // save these other two in a file named PT.txt: Message = Mensagem TestMsg = Isso é um teste Exit = SairThe TotalCross deployer will include the two files referenced below in the tcz file.
String txt = idiom == EN ? "EN.txt" : "PT.txt"; byte[] b = Vm.getFile(txt); Hashtable res = new Hashtable(new String(b,0,b.length)); new MessageBox(res.get("Message"), res.get("TestMsg"), new String[]{res.get("Exit")}).popupNonBlocking();Note that the keys are case sensitive, and that all strings are trimmed.
public Hashtable(java.lang.Object[] keys, java.lang.Object values)
Object[]
). In this case, the number of keys and values must match.
public void clear()
public java.lang.Object get(java.lang.Object key)
key
- a key in the hashtable.null
if the key is not mapped to any value in
this hashtable.public java.lang.String getString(java.lang.Object key)
key
- a key in the hashtable.null
if the key is not mapped to any value in
this hashtable.public java.lang.String getString(java.lang.Object key, java.lang.String defaultValue)
key
- a key in the hashtable.defaultValue
if the key is not mapped to any value in
this hashtable.public java.lang.Object get(java.lang.Object key, java.lang.Object defaultValue)
key
- a key in the hashtable.defaultValue
- The default value to be returned if none is found.defaultValue
if the key is not mapped to any value in
this hashtable.public java.lang.Object get(int hash, java.lang.Object defaultValue)
hash
- The key hash in the hashtable.defaultValue
- The default value to be returned if none is found.defaultValue
if the key is not mapped to any value in
this hashtable.public java.lang.Object get(int hash)
Caution: since you're passing an integer instead of an object, if there are two objects that map to the same key, this method will always return the first one only.
hash
- The key hash in the hashtable.null
if the key is not mapped to any value in
this hashtable.public boolean exists(java.lang.Object key)
key
- a key in the hashtable.public Vector getKeys()
getValues()
,
getKeyValuePairs(java.lang.String)
public Vector getValues()
getKeys()
,
getKeyValuePairs(java.lang.String)
public Vector getKeyValuePairs(java.lang.String separator)
key=value
from the Hashtable.
Each vector's element can safely be casted to a String.separator
- the separator between the key and the value. Should be ": ","=", etc.public void copyInto(Hashtable target)
public java.lang.Object put(java.lang.Object key, java.lang.Object value)
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.
key
- the hashtable key.value
- the value.null
if it did not have one.Object.equals(java.lang.Object)
public java.lang.Object put(int hash, java.lang.Object value)
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.
This method receives a hashcode instead of the object. You MUST use the get(int) method to retrieve the value, otherwise you will get a NullPointerException, because no key is stored using this method.
hash
- the hashtable key's hash.value
- the value.null
if it did not have one.Object.equals(java.lang.Object)
protected void rehash()
public java.lang.Object remove(java.lang.Object key)
key
- the key that needs to be removed.null
if the key did not have a mapping.public java.lang.Object remove(int hash)
hash
- the hash code of the key that needs to be removed.null
if the key did not have a mapping.public int size()
public java.lang.StringBuffer dumpKeysValues(java.lang.StringBuffer sb, java.lang.String keyvalueSeparator, java.lang.String lineSeparator)
sb
- The StringBuffer where the data will be dumped tokeyvalueSeparator
- The separator between the key and the value (E.G.: ": ")lineSeparator
- The separator placed after each key+value pair (E.G.: "\r\n"). The last separator is cut from the StringBuffer.