Создание компаратора для TreeSet с 2D-массивами - Java - PullRequest
0 голосов
/ 09 марта 2012

В моей Java-программе есть TreeSet с 2D-массивами.Тем не менее, я не хочу, чтобы в нем были дубликаты, поэтому я решил создать класс, который реализует Comparator, чтобы использовать метод contains () TreeSet, чтобы посмотреть, добавляю я дубликат или нет.Однако, то, что содержит (), кажется, иногда не работает должным образом.Вот компаратор:

public class ComparatorMatrix implements Comparator<int[][]> {

public int compare(int[][] matrix1, int[][] matrix2) {
    if(Arrays.deepEquals(matrix1, matrix2)) {return 0;}

    return -1;
}

Я не реализовал метод equals (), и я понятия не имею, как это сделать.Что мне делать?

1 Ответ

0 голосов
/ 10 марта 2012

ComparatorMatrix не удовлетворяет определению Comparator, и поэтому у вас возникают проблемы.Как сказал Карл Манастер, вам нужно правильно возвращать, если сравнение (a, b) возвращает -1, сравнение (b, a) должно возвращать 1 или оно не будет работать в TreeSet.

Если определения нетдля заказа вы должны использовать другой HashSet.Тогда вам нужно только реализовать hashCode и equals;Равно уже реализовано.Вы можете легко обернуть матрицу в объект, который кэширует hashCode, поэтому вам не нужно каждый раз пересчитывать его.

...