簡體   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