Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VERY Strange problem with HashTable and HashMap.

207 views
Skip to first unread message

rln...@gmail.com

unread,
Jun 18, 2007, 7:17:07 PM6/18/07
to
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;

Message has been deleted

Mark Rafn

unread,
Jun 18, 2007, 8:00:34 PM6/18/07
to
<rln...@gmail.com> wrote:
>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
--
Mark Rafn da...@dagon.net <http://www.dagon.net/>

oh_maan

unread,
Jun 19, 2007, 3:04:00 AM6/19/07
to

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..

0 new messages