VERY Strange problem with HashTable and HashMap.

R

rlnasr

Check this out...

If you execute this code you would think that you get 4 entries in the
Hashtable, however only three entries are present. I am using jdk
1.5.0_09. I observed the same kind of bug with Hashmap as well.

What seems to be happening is the final "put" for the "FAX" key is
overwriting the first "DESC" entry. Very very strange. Does anyone
know what may be happening here?

java.util.Hashtable hashtable = new java.util.Hashtable();

hashtable.put("DESC", Boolean.FALSE);
hashtable.put("ATT", Boolean.FALSE);
hashtable.put("POST", Boolean.FALSE);
hashtable.put("FAX", Boolean.FALSE);

return hashtable;
 
M

Mark Rafn

If you execute this code you would think that you get 4 entries in the
Hashtable, however only three entries are present. I am using jdk
1.5.0_09. I observed the same kind of bug with Hashmap as well.

You're doing something else wrong. Post a complete (simple, self-contained)
example and we'll tell you what's going on.
What seems to be happening is the final "put" for the "FAX" key is
overwriting the first "DESC" entry. Very very strange. Does anyone
know what may be happening here?

You're not telling us the whole story. Something else in your code is
confusing you.
java.util.Hashtable hashtable = new java.util.Hashtable();
hashtable.put("DESC", Boolean.FALSE);
hashtable.put("ATT", Boolean.FALSE);
hashtable.put("POST", Boolean.FALSE);
hashtable.put("FAX", Boolean.FALSE);
return hashtable;

I see no such problem.

import java.util.Hashtable;
public class Test {
public static Hashtable getTable() {
Hashtable hashtable = new Hashtable();
hashtable.put("DESC", Boolean.FALSE);
hashtable.put("ATT", Boolean.FALSE);
hashtable.put("POST", Boolean.FALSE);
hashtable.put("FAX", Boolean.FALSE);
return hashtable;
}

public static void main(String[] args) {
Hashtable ht = getTable();
System.out.println("number of entries: " + ht.size());
}
}

$ java -version
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode)

$ java -cp . Test
number of entries: 4
 
O

oh_maan

Check this out...

If you execute this code you would think that you get 4 entries in the
Hashtable, however only three entries are present. I am using jdk
1.5.0_09. I observed the same kind of bug with Hashmap as well.

What seems to be happening is the final "put" for the "FAX" key is
overwriting the first "DESC" entry. Very very strange. Does anyone
know what may be happening here?

java.util.Hashtable hashtable = new java.util.Hashtable();

hashtable.put("DESC", Boolean.FALSE);
hashtable.put("ATT", Boolean.FALSE);
hashtable.put("POST", Boolean.FALSE);
hashtable.put("FAX", Boolean.FALSE);

return hashtable;

I guess you attached a debugger to examine the contents of the
hashtable and found only 3 entries there. What might have happened is
that there was a collision between 2 of your keys and thus one of the
colliding key was linearly chained with the other one. If you examine
the key in the hash table closely you will find a "next" element which
holds the key that collided with it. If this is not the case, then
there is some bug in your code. Please post the whole code.

Regards..
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top