Я помню, затмение и идея иметь этот шаблон для автоматического создания hashCode объекта на основе его атрибутов.
Одна из стратегий, если используется число и строка, выглядит примерно так:
return stringValue.hashCode() + intValue * 32;
или что-то подобное.
У меня нет ни затмения, ни идеи, и я бы хотел создать такую функцию.
EDIT
На основе ответов я создаю этот мини-класс
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;
}
}
Этот класс должен использоваться в качестве ключа для большой карты памяти (> 10 тыс. Элементов). Я не хочу повторять их каждый раз, чтобы определить, совпадают ли String и int.
Спасибо.
пс .. ммх, наверное, это должны быть имена StringIntKey.