Как получить контрольную сумму массива объекта в Java - PullRequest
0 голосов
/ 30 августа 2018

Как вычислить контрольную сумму массива объектов в 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 голосов
/ 30 августа 2018

переопределить 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);

вы получите одинаковый результат как на сервере, так и на клиенте.

...