如何在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
的校验和?如果客户端和服务器上的数据相同,则校验和应该相同;如果客户端和服务器上的数据相同,是否有任何方法可以计算出校验和是否相同?
答案 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);
您将在服务器和客户端上获得相同的结果。