Julian Hyde created CALCITE-1735:
------------------------------------
Summary: ImmutableBitSet should not implement Comparable
Key: CALCITE-1735
URL: https://issues.apache.org/jira/browse/CALCITE-1735
Project: Calcite
Issue Type: Bug
Reporter: Julian Hyde
Assignee: Julian Hyde
{{ImmutableBitSet}} should not implement the {{Comparable}} interface.
{{Comparable}} requires a total order -- in particular, {{x.compareTo(y)}}
should return 0 if and only if {{x.equals(y)} -- but {{ImmutableBitSet}} is a
partial order (set inclusion).
Bad things happen if you use non-compliant {{Comparable}}s as keys in a
{{HashMap}} in JDK 8 or later. It uses a red-black tree and some of the keys
just disappear.
Remove {{implements Comparable}} and add a field {{public static
Comparator<ImmutableBitSet> COMPARATOR}} instead. People can use it if they
know the risks.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)