2013-05-29 2 views
4

Как создать хэш-код из двух полей в моем классе?Создание hashCode из нескольких полей?

Например, я хочу Pair классы с теми же объектами V имеют один и тот же хэш-код:

public class Pair<V> { 
    V from, to; 
} 

Должен ли я умножить их hashCodes вместе? Добавить их? Умножить их на простое?

+0

посмотреть, как [Ломбки] (http://projectlombok.org/features/EqualsAndHashCode.html), это может помочь – soulcheck

+0

Есть вопросы **, которые уже относятся к SO, связанные с этим. Было ли что-то непонятное? –

ответ

7

Один из способов сделать это, добавив хеш-код первого поля для хэша-кода второго поля, умноженный на небольшом простом число, например:

public int hashCode() { 
    return 31 * from.hashCode() + to.hashCode(); 
} 
+3

Должны ли быть скобки здесь? Кажется, объяснение не соответствует коду. – meijuh

Смежные вопросы