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

How to get the checksum of an Array of object in Java

如何计算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的校验和?如果客户端和服务器端的数据相同,校验和应该相同,如果客户端和服务器端的数据相同,有没有什么方法可以计算出校验和相同?

覆盖 Test class

中的 hashCode()
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);

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