RFR: 8356995: Provide default methods min(T, T) and max(T, T) in Comparator interface
Roger Riggs
rriggs at openjdk.org
Mon May 19 17:31:52 UTC 2025
On Mon, 19 May 2025 07:25:17 GMT, Tagir F. Valeev <tvaleev at openjdk.org> wrote:
> Implementation of Comparator.min and Comparator.max methods. Preliminary discussion is in this thread:
> https://mail.openjdk.org/pipermail/core-libs-dev/2025-May/145638.html
> The specification is mostly composed of Math.min/max and Collections.min/max specifications.
>
> The methods are quite trivial, so I don't think we need more extensive testing (e.g., using different comparators). But if you have ideas of new useful tests, I'll gladly add them.
>
> I'm not sure whether we should specify exactly the behavior in case if the comparator returns 0. I feel that it could be a useful invariant that `Comparator.min(a, b)` and `Comparator.max(a, b)` always return different argument, partitioning the set of {a, b} objects (even if they are equal). But I'm open to suggestions here.
Min and Max for the equals case would be more consistent if the value returned for equals was the same as the condition, as if `=>` or `<=` were used for the comparison.
The code would be easier to read and match the description if max used `>=` and min used `<=`.
-------------
PR Review: https://git.openjdk.org/jdk/pull/25297#pullrequestreview-2851547425
More information about the core-libs-dev
mailing list