Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #17751 > unrolled thread
| Started by | "Lew" <lew@1:261/38.remove-m2z-this> |
|---|---|
| First post | 2012-08-12 18:58 +0000 |
| Last post | 2012-08-13 18:36 +0000 |
| Articles | 3 — 2 participants |
Back to article view | Back to comp.lang.java.programmer
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: hashCode "Lew" <lew@1:261/38.remove-m2z-this> - 2012-08-12 18:58 +0000
Re: hashCode "Arne Vajhøj" <������
høj@1:261/38.remove-nlb-this> - 2012-08-13 18:36 +0000
Re: hashCode "Arne Vajhøj" <������
høj@1:261/38.remove-nlb-this> - 2012-08-13 18:36 +0000
| From | "Lew" <lew@1:261/38.remove-m2z-this> |
|---|---|
| Date | 2012-08-12 18:58 +0000 |
| Subject | Re: hashCode |
| Message-ID | <5027F2CA.56697.calajapr@time.synchro.net> |
To: =?UTF-8?B?QXJuZSBWYWpow7hq?=
From: Lew <noone@lewscanon.com>
Arne Vajh-,j wrote:
> The original questions were:
>
> #Is it always technically correct to override the hashCode function #like so:
> #
> # @Override
> # public int hashCode() {
> # return 1;
> # }
>
> For which the answer is YES. Per documentation.
>
> But with really poor performance in many relevant cases.
>
> #Would it be potentially better if that was Object's implementation?
>
> Which was clarified to:
>
> #Better in the sense that you would never HAVE to override hashCode.
>
> For which the answer is also YES. Per the previous.
No, that's not true. Value-equality maps, for example, would not work if you
didn't override 'hashCode()' in the key type to match value equality on the
keys.
> But with the same performance note. And a big sigh because it
> seems to want to broaden bad performance from a single class
> to the entire programming style (multiple classes).
Overriding 'hashCode()' is done for functional reasons, not performance
reasons. If you fail to override the method, you'll get incorrect behavior, for
example failing to find a collection member that is actually present.
--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg
--- BBBS/Li6 v4.10 Dada-1
* Origin: Prism bbs (1:261/38)
--- Synchronet 3.16a-Win32 NewsLink 1.98
Time Warp of the Future BBS - telnet://time.synchro.net:24
[toc] | [next] | [standalone]
| From | "Arne Vajhøj" <������ høj@1:261/38.remove-nlb-this> |
|---|---|
| Date | 2012-08-13 18:36 +0000 |
| Message-ID | <502943B3.56758.calajapr@time.synchro.net> |
| In reply to | #17751 |
To: Lew From: =?UTF-8?B?QXJuZSBWYWpow7hq?= <arne@vajhoej.dk> On 8/12/2012 12:46 AM, Lew wrote: > Arne Vajh-,j wrote: >> But with the same performance note. And a big sigh because it >> seems to want to broaden bad performance from a single class >> to the entire programming style (multiple classes). > > Overriding 'hashCode()' is done for functional reasons, not performance > reasons. If you fail to override the method, you'll get incorrect > behavior, for example failing to find a collection member that is > actually present. Correct. But the return constant is a special case. It functions as it should but performs very poorly. Arne --- BBBS/Li6 v4.10 Dada-1 * Origin: Prism bbs (1:261/38) --- Synchronet 3.16a-Win32 NewsLink 1.98 Time Warp of the Future BBS - telnet://time.synchro.net:24
[toc] | [prev] | [next] | [standalone]
| From | "Arne Vajhøj" <������ høj@1:261/38.remove-nlb-this> |
|---|---|
| Date | 2012-08-13 18:36 +0000 |
| Message-ID | <502943B3.56756.calajapr@time.synchro.net> |
| In reply to | #17751 |
To: Lew
From: =?UTF-8?B?QXJuZSBWYWpow7hq?= <arne@vajhoej.dk>
On 8/12/2012 12:46 AM, Lew wrote:
> Arne Vajh-,j wrote:
>> The original questions were:
>>
>> #Is it always technically correct to override the hashCode function
>> #like so:
>> #
>> # @Override
>> # public int hashCode() {
>> # return 1;
>> # }
>>
>> For which the answer is YES. Per documentation.
>>
>> But with really poor performance in many relevant cases.
>>
>> #Would it be potentially better if that was Object's implementation?
>>
>> Which was clarified to:
>>
>> #Better in the sense that you would never HAVE to override hashCode.
>>
>> For which the answer is also YES. Per the previous.
>
> No, that's not true. Value-equality maps, for example, would not work if
> you didn't override 'hashCode()' in the key type to match value equality
> on the keys.
That was almost exactly what I answered in my first answer to the original
poster.
Then I read it as "would it be better if my class used Object's
implementation".
But after reading the clarification then I think it should be read as "would it
be better if Object used the implementation shown".
Very different question!
Arne
--- BBBS/Li6 v4.10 Dada-1
* Origin: Prism bbs (1:261/38)
--- Synchronet 3.16a-Win32 NewsLink 1.98
Time Warp of the Future BBS - telnet://time.synchro.net:24
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.java.programmer
csiph-web