Array equality, comparison and mismatch

Paul Sandoz paul.sandoz at
Mon Oct 12 19:56:29 UTC 2015

> On 12 Oct 2015, at 19:50, Mike Duigou <openjdk at> wrote:
>>> On 22 Sep 2015, at 18:30, Paul Sandoz <Paul.Sandoz at> wrote:
>>> Hi,
>>> Please review the following which adds methods to Arrays for performing equality, comparison and mismatch:
>> Updated the above with JavaDoc for all methods.
>> Paul.
> There is a Kilimanjaro of tedium in building changes like these that are implemented across all the basic types. Thank you for taking this on so thoroughly.

Tell me about it :-)

> A few comments.
> - Inconsistent @since declarations. Both "9" and "1.9" are used. I know Henry Jen was working on normalizing this for the -platform javac work, but am uncertain what was chosen. It is perhaps time to drop the "1.”

I updated Byte/Short methods. At some point there is likely to be a global s/@since 1.9/@since 9/ but i have been trying to use 9 where possible.

> - Have you done side by side textual comparisons of the docs and implementations to make sure there are only expected differences of types and semantics (== vs equals vs compareUnsigned)? It's easy for an error to creep in as you go through many iterations by forgetting to make a fix in one implementation.

Not specifically but kind of when i copied the template from the byte[] receiving methods. I have eyeballed them enough times in different contexts: code, javadoc, specdiff. Doing that caught some mistakes. There might be some mistakes still lurking...

> - I apologize if this was discussed earlier in the thread but why is the comparison of floats and doubles done by first == operator of the int bits and only then the compare method ?

I was being consistent with the test used for the existing equals methods of float[] and double[]. Note that the Float/Double.*to*Bits methods are intrinsic.

> It would seem that the compare method could use this same technique if it wanted. Why not do the same for unsigned comparisons since == would also work for those?

I am not following, sorry. Are you suggesting say:

  for (int i = 0; i < length; i++) {
    int c =[i], b[i])
    if (c != 0) return c;


Note that this area will change when the unsafe vectored mismatch goes in.

> I am *REALLY* looking forward to using these!

Thanks. You might like them even more when they get faster :-)


More information about the core-libs-dev mailing list