【发布时间】:2012-03-09 19:27:23
【问题描述】:
在我的 Java 程序中,我有一个包含 2D 数组的 TreeSet。但是,我不希望其中有任何重复项,因此我决定创建一个实现 Comparator 的类,以便使用 TreeSet 的 contains() 方法,看看我是否添加了重复项。但是,contains() 有时似乎无法正常工作。这是比较器:
public class ComparatorMatrix implements Comparator<int[][]> {
public int compare(int[][] matrix1, int[][] matrix2) {
if(Arrays.deepEquals(matrix1, matrix2)) {return 0;}
return -1;
}
我没有实现 equals() 方法,也不知道该怎么做。我该怎么办?
【问题讨论】:
-
如果项目更小或更大,比较器应该返回负值或正值;你的永远不会返回正值。如果 a a。你需要让它自洽。它不能只返回 0 来表示相等;你需要妥善处理剩下的事情。
-
为什么是 TreeSet 而不是常规集?然后你可以只定义相等/哈希码,而不用担心矩阵是“小于”还是“大于”另一个 matirx
-
TreeSet 对于 contains() 操作具有 log(n) 复杂性。我需要它尽可能快。
标签: java arrays comparator treeset implements