繁体   English   中英

使用2D数组为TreeSet创建比较器-Java

[英]Creating Comparator for TreeSet with 2D Arrays - Java

在我的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()方法,也不知道该怎么做。 我该怎么办?

ComparatorMatrix不满足Comparator的定义,这就是您遇到问题的原因。 正如Carl Manaster所说,如果compare(a,b)返回-1,则需要正确地返回compare(b,a)必须返回1,否则它将在TreeSet中不起作用。

如果没有订单的定义,则必须使用另一个HashSet。 然后,您只需要实现hashCode和equals;即可。 equals已经实现。 您可以轻松地在缓存hashCode的对象中包装矩阵,因此不必每次都重新计算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM