2010/8/5 abhinav sarkar <abhinav.sar...@gmail.com>

> If two objects are equal, they must have same hash code. But it does not
> imply the other way too. Two objects having the same hash code may be not
> equal (see, hash collision). So this approach may give false positives.
>

No, you didn't read the thread carefully enough. The OP is suggesting a
fail-fast approach based on the comparison of the hash-code, not a
success-fast (which as you said, is not possible from hash codes)

>
> -
> Abhinav
>
>
> On Thu, Aug 5, 2010 at 1:45 PM, Nicolas Oury <nicolas.o...@gmail.com>wrote:
>
>> That's might be an interesting trade-of to try.
>> It is really good when big data structures are nearly equal. The
>> comparison is linear but the comparaison once you know the hash is
>> O(1) with a high probability.
>> It is bad on very different structure, if you force a hash.
>> Ideally, the equals method could hash as it goes. When 2 structures
>> are equal, their hashes would be known.
>> If not, by comparing the numbero fo elments hashed to the count, the
>> implementation could decide whether or not to continue hashing...
>>
>> On Wed, Aug 4, 2010 at 10:40 PM, sune.simonsen <sune.simon...@gmail.com>
>> wrote:
>> > I was looking around the Clojure source code and noticed that the
>> > persistent immutable collections caches their hash codes.
>> >
>> > The java doc says the following about the equals method: (http://
>> > download.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html)
>> > "If two objects are equal according to the equals(Object) method, then
>> > calling the hashCode method on each of the two objects must produce
>> > the same integer result."
>> >
>> > So I was thinking, wouldn't it be possible to use the cached hash code
>> > to rule out cases of equals where equals returns false?
>> >
>> > public boolean equals(Object obj){
>> >  ...
>> >  if (_hash != -1 && hashCode() != obj.hashCode()) {
>> >    return false;
>> >  }
>> >  ...
>> > }
>> >
>> > This might of cause result in an extra call to hashCode(), so I don't
>> > know if it is worth it.
>> > Maybe some internal functionality could be added, to ask the
>> > collections if their hash code has been cached.
>> >
>> > What are your thoughts?
>> >
>> > Kind regards Sune Simonsen
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "Clojure" group.
>> > To post to this group, send email to clojure@googlegroups.com
>> > Note that posts from new members are moderated - please be patient with
>> your first post.
>> > To unsubscribe from this group, send email to
>> > clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
>> > For more options, visit this group at
>> > http://groups.google.com/group/clojure?hl=en
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to