私はJavaで少し数学をコーディングしようとしています。私がやろうとしているのは、円分コセットをTreeSetに配置することです。剰余類には、インデックスと整数のセットがあります。セットに同じ要素がある場合、剰余類は他の剰余類と同じです。セットが異なる場合、剰余類はそのインデックス順に並べられます。
例えば:
C1 = [1, 2, 4, 8]
C3 = [3, 6, 9, 12]
C9 = [3, 6, 9, 12]
C1 is less than C3
C3 is equal to C9
十分な数学。重複する要素は必要なく、インデックスで並べ替える必要があるため、剰余類をTreeSetに配置することにしました。
問題は、TreeSet.contains()がfalseを返す場合でも、compareTo()メソッドとequals()メソッドを使用したときに等しい1つの要素をTreeSetで見つけることができます。
これは、プログラムの実際のプリントアウトです。
cosets = [C0, C1, C3, C5, C7]
cosets.contains(C9) = false
C0.compareTo(C9) = -1, C0.equals(C9) = false
C1.compareTo(C9) = -1, C1.equals(C9) = false
C3.compareTo(C9) = 0, C3.equals(C9) = true
C5.compareTo(C9) = -1, C5.equals(C9) = false
C7.compareTo(C9) = -1, C7.equals(C9) = false
以下のコードを添付します。コードが魔法のように機能することがわかったので、コードを単純化したくありませんでした。コードでMAGIC_INDEXの値を7以下に変更すると、動作を開始します。私にはJVMのバグのようです。
助言がありますか?