Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.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: <50269FCF.56640.calajapr@time.synchro.net> X-Comment-To: bob smith Newsgroups: comp.lang.java.programmer In-Reply-To: <50269FCE.56638.calajapr@time.synchro.net> References: <50269FCE.56638.calajapr@time.synchro.net> X-FTN-AREA: COMP.LANG.JAVA.PROGRAMMER X-FTN-MSGID: 1:261/38 94108625 X-FTN-REPLY: 1:261/38 225e14ea Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.16a-Win32 NewsLink 1.98] Lines: 49 Date: Sat, 11 Aug 2012 18:17:51 GMT NNTP-Posting-Host: 69.21.70.65 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1344709071 69.21.70.65 (Sat, 11 Aug 2012 13:17:51 CDT) NNTP-Posting-Date: Sat, 11 Aug 2012 13:17:51 CDT Organization: tds.net Xref: csiph.com comp.lang.java.programmer:17693 To: bob smith From: Lew bob smith wrote: > Eric Sosman wrote: >> bob smith wrote: >>> Is it always technically correct to override the hashCode function like so: It complies with the contract for 'hashCode()'. Is that all it takes to be correct? >>> Would it be potentially better if that was Object's implementation? Would what be better if what were Object's implementation of what? >> Define "better." > Better in the sense that you would never HAVE to override hashCode. > > Now, there are cases where you HAVE to override it, or your code is very broken. No. No matter what 'Object''s 'hashCode()' implementation were, it would need to be overridden when you want value equality instead of object identity for 'equals()'. See Joshua Bloch's seminal work /Effective Java/, which has items that pertain to this. Bottom line: 'hashCode()', 'equals()', and when present, 'compareTo()' must be consistent. 'toString()' should be consistent with those. As long as 'hashCode()' fulfills the contract, your code will work - functionally. But a bad 'hashCode()' could and likely will noticeably affect performance. There is more to correctness than mere functional conformance. -- Lew --- 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