Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #39125
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Best way to make a hashcode? |
| Date | 2019-08-27 09:39 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <qk3bq2$fh9$1@dont-email.me> (permalink) |
| References | <89cadee9-0108-4c76-9e94-c8f716290582@googlegroups.com> <qk1jmg$8ck$1@dont-email.me> <11fd675f-2de2-49a1-baee-b77c2c8d8775@googlegroups.com> |
On 8/27/2019 9:24 AM, Eric Douglas wrote:
> On Monday, August 26, 2019 at 5:41:48 PM UTC-4, Eric Sosman wrote:
>> Just stir the String's hashes into what you've already got:
>>
>> public int hashCode() {
>> long bits = java.lang.Double.doubleToLongBits(getX());
>> bits ^= java.lang.Double.doubleToLongBits(getY()) * 31;
>> bits ^= Objects.hashCode(getStringThing()) * 29;
>> bits ^= Objects.hashCode(getStrungOut()) * 37;
>> bits ^= Objects.hashCode(getStringBikini()) * 59;
>> ...
>> return ...
>> }
>>
>> Choice of multipliers is up to you; perhaps you'd want a few large long
>> values to stir some string bits into the high order half (might not make
>> much difference post-fold, though).
>>
>> Note that all the String values must also be tested in equals().
>>
>
> Another option is to do what Apache did in the POI project, they just return the .toString().hashCode() of a single object containing all the properties of the class, this object extends org.apache.xmlbeans.XmlObject.
>
I'm not familiar with POI, but this sounds expensive: Why create
(most likely) a StringBuilder and several Strings just to compute a
hash value? Remember, the reason for wanting a hash value in the
first place is because you need speed; don't burn extra cycles on
making and collecting needless garbage. (Does the toString() in
this case produce an entire XML document? Oh, Lordy!)
You'd also need to be concerned about the "invariance" of the
String representations of the component sub-objects. If the Strings
change with locale or look-and-feel or something, the hash codes
could also change and mess up everything. Even the mere passage of
time might do it: A date that renders as "today" might spontaneously
change to "yesterday" as midnight passes ...
If you're *sure* the String representations are invariant, and if
you're *confident* that they're not too costly, well, okay, maybe.
--
esosman@comcast-dot-net.invalid
Five hundred twelve days to go.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Best way to make a hashcode? Eric Douglas <e.d.programmer@gmail.com> - 2019-08-26 13:51 -0700
Re: Best way to make a hashcode? Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-08-26 17:41 -0400
Re: Best way to make a hashcode? Eric Douglas <e.d.programmer@gmail.com> - 2019-08-27 06:24 -0700
Re: Best way to make a hashcode? Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-08-27 09:39 -0400
Re: Best way to make a hashcode? Eric Douglas <e.d.programmer@gmail.com> - 2019-08-27 07:29 -0700
Re: Best way to make a hashcode? Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-08-27 11:49 -0400
Re: Best way to make a hashcode? Eric Douglas <e.d.programmer@gmail.com> - 2019-08-27 11:05 -0700
Re: Best way to make a hashcode? Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-08-27 15:16 -0400
Re: Best way to make a hashcode? Eric Douglas <e.d.programmer@gmail.com> - 2019-08-27 13:04 -0700
Re: Best way to make a hashcode? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2019-08-27 23:51 +0200
Re: Best way to make a hashcode? Silvio <silvio@internet.com> - 2019-08-28 01:27 +0200
Re: Best way to make a hashcode? Marcel Mueller <news.5.maazl@spamgourmet.org> - 2019-09-06 19:42 +0200
Re: Best way to make a hashcode? Arne Vajhøj <arne@vajhoej.dk> - 2019-08-26 19:03 -0400
Re: Best way to make a hashcode? Eric Douglas <e.d.programmer@gmail.com> - 2019-08-27 04:59 -0700
Re: Best way to make a hashcode? Arne Vajhøj <arne@vajhoej.dk> - 2019-08-27 21:08 -0400
Re: Best way to make a hashcode? ross.finlayson@gmail.com - 2019-09-05 20:27 -0700
Re: Best way to make a hashcode? trisha guillot <guillottrisha347@gmail.com> - 2020-01-18 07:25 -0800
csiph-web