Метод hashCode
Метод hashCode класса Objects возвращает
хеш-код, вычисленный на основе переданных аргументов.
Этот метод удобен для реализации собственного метода
hashCode в классах: вместо ручного вычисления
хеша по каждому полю можно передать нужные значения
в этот метод. В параметры метода мы передаем
произвольное количество объектов, для которых
необходимо вычислить общий хеш-код. Если передать
значение null, оно учитывается как ноль.
Синтаксис
Objects.hashCode(Object obj)
Objects.hash(Object... values)
Пример
Давайте вычислим хеш-код для одной строки:
import java.util.Objects;
public class Main
{
public static void main(String[] args)
{
String str = "abcde";
int res = Objects.hashCode(str);
System.out.println(res);
}
}
Результат выполнения кода:
92599395
Пример
Давайте вычислим хеш-код для нескольких значений
с помощью метода hash:
import java.util.Objects;
public class Main
{
public static void main(String[] args)
{
String str = "abcde";
int num = 12345;
int res = Objects.hash(str, num);
System.out.println(res);
}
}
Результат выполнения кода:
1669644855
Пример
Давайте проверим, как метод обрабатывает значение
null. Для этого передадим его в качестве
аргумента:
import java.util.Objects;
public class Main
{
public static void main(String[] args)
{
String str = null;
int res = Objects.hashCode(str);
System.out.println(res);
}
}
Результат выполнения кода:
0
Пример
Давайте используем метод hash внутри
собственного класса для реализации метода
hashCode:
import java.util.Objects;
public class Main
{
public static void main(String[] args)
{
Point p = new Point(1, 2);
System.out.println(p.hashCode());
}
}
class Point
{
private int x;
private int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
@Override
public int hashCode()
{
return Objects.hash(x, y);
}
}
Результат выполнения кода:
994