Я пытаюсь немного кодировать математику с помощью Java.Я пытаюсь установить циклотомические классы в TreeSet.Класс имеет индекс и набор целых чисел.Класс смежности равен другому классу смежности, если набор имеет те же элементы.Если наборы различаются, то coset упорядочивается по его индексу.
Например:
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, я все еще могу найти один элементTreeSet, который равен при использовании методов compareTo () и equals ().
Это фактическая распечатка программы:
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.
http://2m.lt/files/Main.java
http://2m.lt/files/Coset.java
Есть предложения?