Arrays.deepHashCode
의 동작을 이해하는 데 몇 가지 문제가 있습니다 (int[][]
). 프로그램을 읽기가 쉽다고 가정합니다. A와 B는 예상대로 동일한 해시를가집니다. D도 나머지와 다릅니다. 그러나 어떤 이유로 C는 A와 B와 같습니다. C는 실제로 arrayA (및 arrayB)의 조인이지만, 이는 우연히 일치 할 수 있으며 동일한 해시 코드가 반환 된 이유는 아닙니다.2 차원 배열의 Array 클래스의 메서드 deepHashCode
int[][]
에서이 방법을 사용하지 않겠습니까? 좋은 방법의 모든 제안은 동일한 정수를 반환 int[][]
내 자신의 해시 코드를 만들 경우 각 부분 배열의 각 요소는 서로 (깊은 복제와 같은 같은 위치, 같은 길이 ...)
import java.util.Arrays;
public class Test{
public static void main(String[] args){
int[][] arrayA = new int[][]{
{1,2,3},
{4,5,6},
{7,8,9}
};
int[][] arrayB = new int[][]{
{1,2,3},
{4,5,6},
{7,8,9}
};
int[][] arrayC = new int[][]{
{1,4,7},
{2,5,8},
{3,6,9}
};
int[][] arrayD = new int[][]{
{1,5,9},
{2,3,7},
{4,6,8}
};
System.out.println("Deep hash codes:");
System.out.println("Array A: " + Arrays.deepHashCode(arrayA));
System.out.println("Array B: " + Arrays.deepHashCode(arrayB));
System.out.println("Array C: " + Arrays.deepHashCode(arrayC));
System.out.println("Array D: " + Arrays.deepHashCode(arrayD));
}
}
동일한 경우에만
출력 :
Deep hash codes:
Array A: 30729379
Array B: 30729379
Array C: 30729379
Array D: 30760099
물론 이해할 수 있습니다. 수업에 감사드립니다! –
같은 hashCode를 가지는 전치 배열에 관해서는, Javadoc로 지정된 배열 # deepHashCode에서 hashCode를 계산하는 데 사용 된 공식을 볼 수 있습니다. – Thilo