私のJavaプログラムでは、2D配列を持つTreeSetを持っています。しかし、私はその中に重複したくないので、TreeSetのcontains()メソッドを使うために、Comparatorを実装するクラスを作成して、重複を追加するかどうかを調べることにしました。しかし、contains()は時々正しく動作しないようです。ここにコンパレータがあります:2D配列を持つTreeSetのコンパレータを作成する - Java
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を返すことはできません。残りの部分を適切に処理する必要があります。 –
ツリーセットが正規のセットを超えているのはなぜですか?次に等価/ハッシュコードを定義するだけで、行列が別のmatirxより小さいか大きいかを心配する必要はありません – RedDeckWins
TreeSetはcontains()操作のlog(n)複雑さを持っています。私はできるだけ早くそれが必要です。 –