我想用java编写一点数学。我想要做的是将cyclotomic cosets添加到TreeSet。陪集有一个索引和一组整数。如果集合具有相同的元素,则陪集等于其他陪集。如果集合不同,则陪集按其索引排序。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()方法时在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错误。
有什么建议?
`收集#包含`是**设计**给出'假'结果(以及'真正')...... scr – 2010-11-30 10:41:18