2013-08-31 3 views
-2

Если метод toString() класса Object возвращает хеш-код объекта, то что делает метод hashCode() класса Object? Если он также возвращает хеш-код объекта, то почему значение, возвращаемое методом toString(), совпадает с значением, которое возвращается методом hashCode()?Метод toString() и hashCode() класса Object в java

+3

ToString() метод не * просто * возвращает hashcode .. – Kon

+0

_why значение, возвращаемое методом toString() значением, возвращаемым методом hashCode(). Перефразируйте, пожалуйста, без глагола. –

+0

Это, безусловно, новичок, но он показывает некоторое понимание. Я думаю, что это несправедливо. –

ответ

1

Объект является базовым классом для всех других классов Java. Это означает, что все классы неявно поддерживают toString и hashCode. Но многие классы переопределяют один или оба, поэтому они не получают реализации по умолчанию Object.

Например, toString из двойного объекта будет возвращать осмысленное по умолчанию в формате версии числа с плавающей точкой с, в то время как hashCode дубля возвращает хэш версию значения с плавающей точкой, подходит для манипуляция поиска в хэш-таблице.

toString предназначен в первую очередь для поддержки отладочной печати. То, что оно возвращает, - это то, что разработчик считал «самым ощутимым» для этого конкретного класса объектов. (Для Object не так много работать, поэтому используется имя класса в сочетании с текстовым представлением значения hashCode.) hashCode, с другой стороны, предназначен для облегчения поиска на основе хэша, и поэтому разработчик пытается производят число, которое имеет высокую вероятность быть другим на объектах, которые сравниваются по-разному, но гарантированно идентичны на объектах, которые сравниваются как равные.

0

некоторые моменты здесь:

toString() 

возвращает имя класса @ Hashcode

hashCode() 

возвращает Hashcode только класса

хэш-код используется для коллекций (наборы и карты), это способ для java для повышения производительности при поиске в них, я не знаю, знаете ли вы, как использовать структуру Collections или нет! но они работают как этот

при попытке поиска объекта в коллекции, он начинает искать хэш-код вашего объекта, и, когда он находит совпадение, он начинает искать равный объект

таким образом, вместо поиска коллекции из 1000 объектов, пытающихся сравнить каждый объект с вашим поиском, он будет искать хэш-коды (которые могут быть только 50, например), затем он ищет объекты с этим хеш-кодом

есть много правил о том, как работать с методами equals() и hashCode() там, но они легко любым способом

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