Метод hashCode()
в языке программирования Java возвращает целочисленное значение, известное как хеш-код, который является специфичным для каждого объекта. Этот хеш-код используется при работе с коллекциями, такими как HashMap
, HashSet
и Hashtable
.
Код, возвращенный методом hashCode()
, должен быть таким же для одного и того же объекта во время одной сессии Java Application, если информация, используемая при сравнении объектов в методе equals()
, не была изменена.
Java предполагает, что тип возвращаемого значения этого метода – целочисленный (int
), а не объект (Object
), long
или String
. Это выбрано потому, что int
предоставляет достаточное количество уникальных значений для большинства случаев использования и экономит память по сравнению с использованием long
. Также важно помнить, что хотя String
имеет свой собственный метод hashCode()
, возвращающий int
, сам тип String
не может быть возвращаемым значением для метода hashCode()
.
Вот пример метода hashCode()
, который возвращает тип int
.
public class Dog {
private String breed;
private String name;
// конструктор, методы equals() и т.д.
@Override
public int hashCode() {
int result = 17;
result = 31 * result + breed.hashCode();
result = 31 * result + name.hashCode();
return result;
}
}
В этом примере хеш-код для класса Dog
вычисляется на основе породы (breed
) и имени (name
) собаки. Если у двух объектов Dog
одна и та же порода и имя, хеш-коды этих объектов будут одинаковыми.
Хорошо написанный метод hashCode()
улучшает производительность программы Java и содействует более эффективному использованию коллекций. Применяя определенные стратегии и тщательно тестируя реализацию, программисты могут обеспечить, что их метод hashCode()
будет работать правильно и эффективно.