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)

Reply via email to