I remember eclipse and idea have this template to automatically create an object's hashCode based on its attributes.
One of the strategies if a number and a string is used is something like this.
return stringValue.hashCode() + intValue * 32;
Ooor something like that.
I don't have nor eclipse or idea at hand and I would like to create such function.
EDIT
Based on the answers I create this mini-class
class StringInt {
private final String s;
private final int i;
static StringInt valueOf( String string , int value ) {
return new StringInt( string, value );
}
private StringInt( String string, int value ) {
this.s = string;
this.i = value;
}
public boolean equals( Object o ) {
if( o != null && o instanceof StringInt ){
StringInt other = ( StringInt ) o;
return this.s == other.s && this.i == other.i;
}
return false;
}
public int hashCode() {
return s != null ? s.hashCode() * 37 + i : i;
}
}
This class is to be used as key for a large memory map ( > 10k elements ) I don't want to iterate them each time to find if the String and the int are the same.
Thank you.
ps.. mmh probably it should be names StringIntKey.