This week's book giveaway is in the Clojure forum.
We're giving away four copies of Clojure in Action and have Amit Rathore and Francis Avila on-line!
See this thread for details.
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

correct hashCode( ) method

 
ankur rathi
Ranch Hand
Posts: 3830
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ruels for correct implementation of hashCode() method :

1] if two object returning true with equals() method , then they should return same int with hashCode() method .

2] But the vice versa is not true . I mean two object may have same hash code but not returning true with equals() method .

Is this right ???
 
Ray Stojonic
Ranch Hand
Posts: 326
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by rathi ji:
Is this right ???

Yes
 
Tony Morris
Ranch Hand
Posts: 1608
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

I mean two object may have same hash code but not returning true with equals() method .


Not only is it right, it is impossible for it to be wrong.
That is, if I created Integer.MAX_VALUE + 1 unique (equals returns false) instances your class, I am guaranteed a hash code collision.

In practice, it is quite simple to create a hash code collision.
I wrote a small application once to demonstrate that generating random 5 character Strings results in a collision about 3 times per second on my development machine. I wrote it because some twit was trying to use a String as a switch argument and claimed that "it works" if you call hashCode. This is despite the fact that the switch/case construct is evil in itself.
[ January 27, 2005: Message edited by: Tony Morris ]
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic