Если я все правильно понял, то клиент должен периодически запрашивать данные с сервера.
Предлагаю такой вариант:
Заведем еще два поля в таблице на сервере: Version и Deleted.
При каждом изменении записи ее версия = максимальная версия в текущей таблице + 1.
UID|HASH|Version|Deleted
1|c4ca4238a0b923820dcc509a6f75849b|1|0
2|c81e728d9d4c2f636f067f89cc14862c|2|0
3|eccbc87e4b5ce2fe28308fd9f2a7baf3|4|0
4|a87ff679a2f3e71d9181a67b7542122c|8|1
5|e4da3b7fbbce2345d7772b0674a318d5|6|0
Клиент запрашивает данные старше 3-ей версии.
Вернется:
{
"version": 8,
"changed": [
{
"UID": 3,
"HASH": "eccbc87e4b5ce2fe28308fd9f2a7baf3"
},
{
"UID": 5,
"HASH": "e4da3b7fbbce2345d7772b0674a318d5"
}
],
"deleted": [
{
"UID": 4
}
]
}
Не надо бегать по спискам и сравнивать хэши.
Таким образом реализуется гибкий подход к клиентам с разной степенью актуальности данных. Это экономия трафика и экономия ресурсов устройства.