|
|
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
В каких ситуациях методы будут возвращать одинаковые хэшкоды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 10:33:22 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
1) Не методы, а метод - hashCode(), только он возвращает хэщкоды, equals() тут ни при чем. 2) Одиноавые значения будут возвращены тогда ... когда алгоритм вернет одинаковые значения Т.е. это зависит только от того, как вы реализуете hashCode() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 10:57:46 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
benao, если про equals то он определяет разницу объектов по адресу. Если не переопределить логику, то это просто говорит, что адрес одинаков = одна переменная. Для смысла надо переопределить equals ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 11:07:51 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
Переопределять надо, чтоб возвращало то что нужно. Вот немного можно посмотреть http://www.askdev.ru/java/1689/%D0%9F%D0%B5%D1%80%D0%B5%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-override-equals-%D0%B8-hashCode/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 16:22:27 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
loop Откройте исходники класса Object.java, почитайте про контракты для методов equals, hashcode, В голове чуть прояснится но не совсем, затем скачайте книгу Блоха Effective Java 2 ed, почитайте пункты про equals hashcode end loop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2012, 16:40:45 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
benaoВ каких ситуациях методы будут возвращать одинаковые хэшкоды? я вам помогу сформулировать вопрос и дать ответ(да, я экстрасенс): Вопрос: Когда методы hashCode() для двух объектов - обязан возвращать одинаковый хешкод. Ответ: Когда метод equals - для этих объектов вернет true. или проще говоря, если объекты равны - то их хешкод обязан совпадать, иначе работа со всякими хешмапами и хешсетами - будет некорректной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 04:19:25 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNОтвет: Когда метод equals - для этих объектов вернет true. или проще говоря, если объекты равны - то их хешкод обязан совпадать, иначе работа со всякими хешмапами и хешсетами - будет некорректной. Неверно, так как: 1) hashCode() может быть одинаковым и у разных объектов 2) Даже если hashCode() у двух одинаковых объектов возвращает разные значения, ничего страшного с HashMap и HashSet не случиться, они будут работать корректно . Дргуое дело, что они могут работать неэффективно , но разница между понятие "некорректно" и "неэффективна" огромна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 09:50:26 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
svenomZyK_BotaNОтвет: Когда метод equals - для этих объектов вернет true. или проще говоря, если объекты равны - то их хешкод обязан совпадать, иначе работа со всякими хешмапами и хешсетами - будет некорректной. Неверно, так как: 1) hashCode() может быть одинаковым и у разных объектов 2) Даже если hashCode() у двух одинаковых объектов возвращает разные значения, ничего страшного с HashMap и HashSet не случиться, они будут работать корректно . Дргуое дело, что они могут работать неэффективно , но разница между понятие "некорректно" и "неэффективна" огромна. Нельзя так категорично комментировать жы;) 1) не противоречит , а у equals объектов hashcode, тем не менее, обязан совпадать 2) хоть бы прокомментировали , что под неэффективностью чаще всего подразумевается скорость "доступа" к элементу. 2.1) некорректность вдруг может проявится, когда мутабл объект используют в качестве ключа и hashcode рассчитывается по полям этого объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 10:07:58 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
Озверин, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. e.setId(1); hashSet.add(e); e.setId(2); hashSet.contains(e);false Ну вот как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 10:38:41 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
За это Код: java 1. извиняюсь ) Вернулся, глянул, заменил на Код: java 1. результат не поменялся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 12:21:56 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
svenom2) Даже если hashCode() у двух одинаковых объектов возвращает разные значения, ничего страшного с HashMap и HashSet не случиться, ты заблуждаешься. не эффективно будет работать, если для большинства разных обектов - будет возвращаться одинаковый хеш. а в случае разного хеша для одинаковых - работа будет не корректна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 15:38:33 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
svenom, вот тебе даже код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. напечатает "false" а если переписать хеш так: Код: java 1. 2. 3. то на консоль будет выведено - "true" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 16:36:10 |
|
||
|
equals() and hashCode()
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNsvenom2) Даже если hashCode() у двух одинаковых объектов возвращает разные значения, ничего страшного с HashMap и HashSet не случиться, ты заблуждаешься. не эффективно будет работать, если для большинства разных обектов - будет возвращаться одинаковый хеш. а в случае разного хеша для одинаковых - работа будет не корректнаДа, все верно, ваша правда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2012, 16:51:18 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37649749&tid=2132627]: |
0ms |
get settings: |
17ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
47ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 345ms |
| total: | 535ms |

| 0 / 0 |
