Objects.hash()
Вычисляет хеш-код из нескольких значений — для реализации hashCode().
Доступно с: Java 7
Синтаксис
static int hash(Object... values)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| values | Object... | Поля, которые участвуют в equals(). |
Возвращаемое значение
intХеш-код, учитывающий все значения и их порядок.
Примеры
Одинаковые значения — одинаковый хеш:
void main() {
IO.println(Objects.hash("Anna", 30) == Objects.hash("Anna", 30));
IO.println(Objects.hash("Anna", 30) == Objects.hash(30, "Anna"));
IO.println(Objects.hash((Object) null));
}Результат:
true
false
31Примечания
Передавайте те же поля, что сравниваются в equals(), — не больше. null допускается. Для одного значения проще Objects.hashCode(value), который для null возвращает 0.
См. также
- Object.hashCode() — Возвращает хеш-код объекта — число, по которому HashMap и HashSet быстро находят объект.
- Object.equals() — Сравнивает объекты по смыслу. По умолчанию работает как ==, поэтому в своих классах его переопределяют.
Вопросы и ответы по теме
В учебнике
- Равенство и хеш-коды — Сравнение объектов в Java — == и equals, контракт equals и hashCode, Objects.equals и Objects.hash, записи и ошибка с HashSet.