Before using your own object as key you must override hashCode() and equals() method of your object.
In simple case you would have something like:
class MyKey {
private String name;
MyKey(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof MyKey) {
return this.name.equals(((MyKey)obj).name);
}
return false;
}
@Override
public int hashCode() {
return this.name.hashCode();
}
}
hashCode
will decide which hash bucket the key belongs to and equals
will decide which object inside that hash bucket.
Without these method, the reference of your object will be used for above comparison which will not work unless you use the same object reference everytime.