Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx02.iad01.newshosting.com!newshosting.com!news-out.readnews.com!transit3.readnews.com!news-out.news.tds.net!newsreading01.news.tds.net!53ab2750!not-for-mail From: "Lew" Subject: Re: hashCode Message-ID: <502943B2.56752.calajapr@time.synchro.net> X-Comment-To: =?UTF-8?B?QXJuZSBWYWpow7hq?= Newsgroups: comp.lang.java.programmer X-FTN-AREA: COMP.LANG.JAVA.PROGRAMMER X-FTN-MSGID: 1:261/38 95075123 Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.16a-Win32 NewsLink 1.98] Lines: 54 Date: Mon, 13 Aug 2012 18:36:16 GMT NNTP-Posting-Host: 69.21.70.65 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1344882976 69.21.70.65 (Mon, 13 Aug 2012 13:36:16 CDT) NNTP-Posting-Date: Mon, 13 Aug 2012 13:36:16 CDT Organization: tds.net X-Received-Bytes: 2607 Xref: csiph.com comp.lang.java.programmer:17804 To: =?UTF-8?B?QXJuZSBWYWpow7hq?= From: "Lew" To: =?UTF-8?B?QXJuZSBWYWpow7hq?= From: Lew 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 --- 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