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!).
Thanks, Dave [ June 18, 2006: Message edited by: David Irwin ]
Joined: Mar 25, 2004
Found my mistake...bug in the equals method.
Originally posted by David Irwin: All,
[ June 18, 2006: Message edited by: David Irwin ]
Joined: Sep 19, 2009
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.)