Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #39126

Re: Best way to make a hashcode?

Newsgroups comp.lang.java.programmer
Date 2019-08-27 07:29 -0700
References <89cadee9-0108-4c76-9e94-c8f716290582@googlegroups.com> <qk1jmg$8ck$1@dont-email.me> <11fd675f-2de2-49a1-baee-b77c2c8d8775@googlegroups.com> <qk3bq2$fh9$1@dont-email.me>
Message-ID <cbde76cd-4227-4f2c-b33f-54d8c3edebeb@googlegroups.com> (permalink)
Subject Re: Best way to make a hashcode?
From Eric Douglas <e.d.programmer@gmail.com>

Show all headers | View raw


On Tuesday, August 27, 2019 at 9:39:24 AM UTC-4, Eric Sosman wrote:
>      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.
> 
> -- 

It extends XmlObject not document.  That returns all properties that have value.  By default that could look like
<xml-fragment borderId="21" applyBorder="true"/>

I expect these fragments will still match if you change the locale, assuming all the xml objects you're mapping still have the same locale.
The advantage is you can add more properties without changing the hashcode method.  This would also mean your objects can match if they're generated from 2 different versions of the API as long as they only reference fields available in both.

Does calling the toString() which calls toPrettyString() iterating over every non-null property to return a single String hashcode add significantly more overhead than the single String to int computation we see in the hashcode generated if we right click the class and select generate hashcode in Eclipse?  Any chance they were thinking about mixing versions with the POI, or more likely they wanted to change the property fields without updating the hashcode method?

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


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