This week's book giveaway is in the Jobs Discussion forum.
We're giving away four copies of Java Interview Guide and have Anthony DePalma on-line!
See this thread for details.
The moose likes Java in General and the fly likes Creating a compount HashMap key Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Java Interview Guide this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Creating a compount HashMap key" Watch "Creating a compount HashMap key" New topic

Creating a compount HashMap key

David Irwin
Ranch Hand

Joined: Mar 25, 2004
Posts: 82

I've been trying to create a compound HashMap key with little success. In particular, my compound map key looks like the following:

It's used to insert data into a May like Map<Key, String> map = new HashMap<Key, String>(). Unforunately, when I go to retrieve the value using something like the following:

I get null instead of the actual value. Does this have something to do with using a String in the hashcode? I'm really lost (and frustrated!).

[ June 18, 2006: Message edited by: David Irwin ]
David Irwin
Ranch Hand

Joined: Mar 25, 2004
Posts: 82
Found my mistake...bug in the equals method.

Originally posted by David Irwin:

[ June 18, 2006: Message edited by: David Irwin ]
John Kaplan

Joined: Sep 19, 2009
Posts: 2
For future reference, you can save yourself a lot of typing and debugging just by relying on the Java implementations of equals, hashCode and compareTo.
All you're doing is concatenating two strings, so do that once in the constructor, & delegate from then on - saves you a lot of code & extraneous transient string operations.
The equals method needs a couple of checks before you delegate according to the arcane rules of equals methods, but aside from that the key class becomes totally brain dead the way you want it. Another alternative is to bag creating a key class and externalizing the string concatenation, but there may be good reason to encapsulate it here (like if it gets more complex than two strings, or key creation is not well contained in one place.
(Note the below code is a fat-fingered variation on a tested key class, pardon for any typos.)

I agree. Here's the link:
subject: Creating a compount HashMap key
It's not a secret anymore!