Если метод toString()
класса Object
возвращает хеш-код объекта, то что делает метод hashCode()
класса Object? Если он также возвращает хеш-код объекта, то почему значение, возвращаемое методом toString()
, совпадает с значением, которое возвращается методом hashCode()
?Метод toString() и hashCode() класса Object в java
ответ
Объект является базовым классом для всех других классов Java. Это означает, что все классы неявно поддерживают toString
и hashCode
. Но многие классы переопределяют один или оба, поэтому они не получают реализации по умолчанию Object.
Например, toString
из двойного объекта будет возвращать осмысленное по умолчанию в формате версии числа с плавающей точкой с, в то время как hashCode
дубля возвращает хэш версию значения с плавающей точкой, подходит для манипуляция поиска в хэш-таблице.
toString
предназначен в первую очередь для поддержки отладочной печати. То, что оно возвращает, - это то, что разработчик считал «самым ощутимым» для этого конкретного класса объектов. (Для Object не так много работать, поэтому используется имя класса в сочетании с текстовым представлением значения hashCode.) hashCode
, с другой стороны, предназначен для облегчения поиска на основе хэша, и поэтому разработчик пытается производят число, которое имеет высокую вероятность быть другим на объектах, которые сравниваются по-разному, но гарантированно идентичны на объектах, которые сравниваются как равные.
некоторые моменты здесь:
toString()
возвращает имя класса @ Hashcode
hashCode()
возвращает Hashcode только класса
хэш-код используется для коллекций (наборы и карты), это способ для java для повышения производительности при поиске в них, я не знаю, знаете ли вы, как использовать структуру Collections или нет! но они работают как этот
при попытке поиска объекта в коллекции, он начинает искать хэш-код вашего объекта, и, когда он находит совпадение, он начинает искать равный объект
таким образом, вместо поиска коллекции из 1000 объектов, пытающихся сравнить каждый объект с вашим поиском, он будет искать хэш-коды (которые могут быть только 50, например), затем он ищет объекты с этим хеш-кодом
есть много правил о том, как работать с методами equals() и hashCode() там, но они легко любым способом
- 1. Java - переопределение hashCode и toString
- 2. toString, hashcode и equals метод внутри интерфейса
- 3. Как метод toString() класса Object скомпилирован в java?
- 4. Идентичность Hashcode в Java Object
- 5. метод ToString класса
- 6. класса Java и Object
- 7. Java: ToString() печатает же Hashcode каждый раз
- 8. Java - новый метод hashCode
- 9. Метод HashCode и Equals в объекте Java
- 10. Как работает метод hashCode() java?
- 11. Equal object = Equal Hashcode последствия, java
- 12. мы можем вызвать метод ToString() класса Object для строки
- 13. java hashcode и равно
- 14. Как метод ToString класса Object способен обнаруживать тип объекта?
- 15. Java hashCode для класса Point
- 16. ToString метод письма счетчик класса
- 17. Метод Java toString (объекты)
- 18. Метод Java toString()
- 19. метод ToString в Java, как
- 20. Метод toString Enum и хорошая практика Java
- 21. Java перегрузки ToString() метод, когда массив класса дается
- 22. NullPointerException в toString() метод класса CustomArrayWritable, MapReduce
- 23. scala create equal/hashcode/tostring без класса case
- 24. toString() метод и рекурсия
- 25. Java: Как использовать метод toString() одного класса в другом?
- 26. Как реализовать метод hashCode и equals
- 27. Реализация ArrayQueue в java нужно toString метод
- 28. Создание метода hashCode() - Java
- 29. Java super a toString метод
- 30. Логическая переменная .toString() Функция Displays [Object Object]
ToString() метод не * просто * возвращает hashcode .. – Kon
_why значение, возвращаемое методом toString() значением, возвращаемым методом hashCode(). Перефразируйте, пожалуйста, без глагола. –
Это, безусловно, новичок, но он показывает некоторое понимание. Я думаю, что это несправедливо. –