Shouldn't HashSet/Map use Arrays.hashCode(x[]) ?
Ulf Zibis
Ulf.Zibis at gmx.de
Fri Jun 4 21:24:29 UTC 2010
Am 04.06.2010 20:26, schrieb Martin Buchholz:
> Aside from the fact that it would be a hugely incompatible change
> to change the hashing/equality algorithm now,
> it is quite a religious argument about which is the Right Thing to do.
>
In most cases we have freedom of religion as we have HashMap and
IdentityHashMap.
There is one exception (maybe more?) for x[] as key.
Both compare arrays on identity level, and unfortunately it's almost
impossible to change this due to incompatibility.
Bug ID 6812862 would provide this religion freedom as a side effect. So
I again don't understand the resistance against it.
> Here's some religion/philosophy for you:
> http://home.pipeline.com/~hbaker1/ObjectIdentity.html
>
Thanks for this interesting historical pre-Java paper.
-Ulf
> There are some existing collections, e.g. BlockingQueues,
> that use identity comparison instead of content comparison.
>
> Martin
>
> On Fri, Jun 4, 2010 at 08:49, Ulf Zibis<Ulf.Zibis at gmx.de> wrote:
>
>> Otherwise e.g. int[] as key for HashSet/Map doesn't make any sense.
>>
>> I use a class where the content of an int[] defines the uniqueness or there
>> instances.
>> Before I create a new instance, I have to check if there is just one for the
>> same int[] content.
>> Using the current HashSet/Map implementation does not serve this need.
>> It seems, that I should first instantiate a temporary object containing the
>> int[], hash it in the set/map, and later throw it away. :-(
>>
>> Maybe another reason for solving
>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6812862
>>
>> -Ulf
>>
>>
>>
>>
>
>
More information about the core-libs-dev
mailing list