Java 프로그램에서 2D 배열이있는 TreeSet이 있습니다. 그러나 어떤 중복도 필요하지 않기 때문에 TreeSet의 contains() 메서드를 사용하여 Comparator를 구현하는 클래스를 만들어 중복을 추가하는지 확인합니다. 그러나 contains()가 때때로 제대로 작동하지 않는 것 같습니다. 다음은 Comparator입니다.2D 배열로 TreeSet 용 Comparator 만들기 - 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을 반환 할 수는 없습니다. 나머지 부분은 제대로 처리해야합니다. –
일반 세트를 통해 TreeSet을 사용해야하는 이유는 무엇입니까? 그럼 평등/해시 코드를 정의하고 행렬이 다른 행렬보다 "작거나"더 큰지 걱정하지 마십시오 – RedDeckWins
TreeSet은 contains() 연산의 log (n) 복잡성을가집니다. 최대한 빨리해야합니다. –