如何在Java中获取对象数组的校验和

时间:2018-08-30 14:04:32

标签: java checksum

如何在Java中计算对象数组的校验和,基本上是尝试将校验和从客户端发送到服务器,客户端将计算arr的校验和,并将其发送到服务器,服务器将计算其本地数据的校验和。例如,我有以下代码:

public class Test {

    public int age;

    public static void main(String[] args) {
        testHash();
    }

    public static void testHash(){
        Test test1 = new Test();
        Test test2 = new Test();
        Test test3 = new Test();

        test1.age = 23;
        test2.age = 123;
        test3.age = 3;


        Test[] arr={test1, test2, test3};
    }

}

如何获取arr的校验和?如果客户端和服务器上的数据相同,则校验和应该相同;如果客户端和服务器上的数据相同,是否有任何方法可以计算出校验和是否相同?

1 个答案:

答案 0 :(得分:3)

覆盖hashCode()类中的Test

public class Test {

    public int age;

    @Override
    public int hashCode() {
        return age;
    }

}

首先对数组进行排序,然后调用Arrays.deepHashCode()

Test[] arr={test1, test2, test3};
Arrays.sort(arr, (t1,t2)-> {return t1.age - t2.age;});
int hash = Arrays.deepHashCode(arr);

您将在服务器和客户端上获得相同的结果。