|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--waba.util.IntHashtable
This class implements a hashtable, which maps keys to values. Both key and value must be int's.
If an error occurs, IntHashtable.NotFound is returned. it corresponds to the minimum negative value of an integer. So, this value (-2147483648) cannot be a key of this IntHashTable.
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:
IntHashtable numbers = new IntHashtable(10);
numbers.put(1, 1000);
numbers.put(2, 2000);
numbers.put(3, 3000);
To retrieve a number, use the following code:
int i = numbers.get(2);
if (i != IntHashtable.INVALID) {
// "two = " + i;
}
Important notes (added by guich)
There are no default constructor to decrease memory usage. You must have an idea for the initial capacity.
thanks to Arthur van Hoff
| Inner Class Summary | |
protected static class |
IntHashtable.Entry
Hashtable collision list. |
| Field Summary | |
int |
collisions
Computes the number of collisions for a set of inserts. |
protected int |
count
The total number of entries in the hash table. |
static int |
INVALID
|
protected float |
loadFactor
The load factor for the hashtable. |
protected IntHashtable.Entry[] |
table
The hash table data. |
protected int |
threshold
Rehashes the table when count exceeds this threshold. |
| Constructor Summary | |
IntHashtable(DataStream ds)
Deprecated. This constructor will be removed in the future. Grab the code and put it in your program. |
|
IntHashtable(int initialCapacity)
Constructs a new, empty hashtable with the specified initial capacity and default load factor of 0.75f. |
|
IntHashtable(int initialCapacity,
float loadFactor)
Constructs a new, empty hashtable with the specified initial capacity and the specified load factor. |
|
| Method Summary | |
void |
clear()
Clears this hashtable so that it contains no keys. |
boolean |
exists(int key)
Checks if the value with the specified key is mapped in this hashtable. |
int |
get(int key)
Returns the value to which the specified key is mapped in this hashtable. |
IntVector |
getKeys()
Return an IntVector of the keys in the IntHashtable. |
IntVector |
getValues()
Return a Vector of the values in the Hashtable. |
int |
put(int key,
int 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. |
int |
remove(int key)
Removes the key (and its corresponding value) from this hashtable. |
void |
saveTo(DataStream ds)
Deprecated. This method will be removed in the future. Grab the code and put it in your program. |
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 |
public static int INVALID
protected IntHashtable.Entry[] table
protected transient int count
protected int threshold
protected float loadFactor
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;
}
}
| Constructor Detail |
public IntHashtable(DataStream ds)
public IntHashtable(int initialCapacity)
initialCapacity - the initial capacity of the hashtable.
public IntHashtable(int initialCapacity,
float loadFactor)
initialCapacity - the initial capacity of the hashtable.loadFactor - a number between 0.0 and 1.0.| Method Detail |
public void clear()
public int get(int key)
throws ElementNotFoundError
key - a key in the hashtable.INVALID if the key is not mapped to any value in
this hashtable.public boolean exists(int key)
key - a key in the hashtable.public IntVector getValues()
public IntVector getKeys()
public int put(int key,
int value)
key to the specified
value in this hashtable. Neither the key nor the
value can be INVALID.
The value can be retrieved by calling the get method
with a key that is equal to the original key.
Note: putting an INVALID key or value returns immediately.
key - the hashtable key.value - the value.IntHashtable.INVALID if it did not have one.Object.equals(java.lang.Object)protected void rehash()
public int remove(int key)
throws ElementNotFoundError
key - the key that needs to be removed.INVALID if the key did not have a mapping.public int size()
public void saveTo(DataStream ds)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||