Java Arrays.deepHashCode()方法

原文:https://www.studytonight.com/java-util/java-arrays-deephashcode-method

在本教程中,我们将学习deepHashCode()方法及其实现。该方法属于位于java.util包的Arrays类。它根据指定数组的“深层内容”返回一个哈希代码。

句法

public static int deepHashCode(Object[] a)

此方法将接收一个数组,并根据数组中的深层内容计算哈希代码,然后以整数形式返回。

获取哈希代码的deepHashCode()示例

在下面的例子中,我们将一个数组传递给方法deepHashCode(),它将根据数组的深层内容返回一个哈希。虽然它会生成一个哈希代码,但不能保证它对于两个不同的数组是唯一的。

import java.util.Arrays;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int array[][] = { 
                { 1, 9 }, 
                { 13, 17 }, 
                { 31, 18} };         
        System.out.println(Arrays.deepHashCode(array));
    } 
}

1036503

获取哈希代码的deepHashCode()示例

在下面的例子中,我们可以看到两个数组是不同的,但是因为所有的元素都存在于两个数组中,所以它生成的哈希值是相同的。

因此,从这个例子中可以非常清楚地看出,即使两个数组中存在不等式,但基于深层内容,它可能会生成相同的哈希代码。

import java.util.Arrays;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int[][] array1 = {
                { 8, 7, 4 }, 
                { 3, 6, 5 },
                { 0, 2, 1 } };
        int[][] array2 = {
                { 8, 4, 0 }, 
                { 6, 7, 5 }, 
                { 3, 2, 1 } };
        System.out.println("Hash array1 " + Arrays.deepHashCode(array1));
        System.out.println("Hash array2 " + Arrays.deepHashCode(array2));
    } 
}

哈希数组 1 37308160 哈希数组 2 37308160

结论:

在本教程中,我们学习了如何使用 deepHashCode()基于数组的深层内容生成哈希值。即使仅仅因为不同的排列而拥有相同的内容,deepHashCode()方法也不会改变哈希代码,因此它不一定会产生唯一的代码。