Могут ли одни и те же данные менять разные пользователи? Если ответ да, то синхронизацию сделать не просто. Вот на есть статья про варианты решения этой задачи. https://habrahabr.ru/company/ncloudtech/blog/264923/
Если ответ нет, тогда второй вопрос: может ли один пользователь залогиниться с разных устройств и менять свои данные, если да то тоже отсылка к предыдущей статье.
Третий вариант, ответ нет на оба вопроса. Тогда для синхронизации данных на локале и в удаленном хранилище нужно иметь уникальный ключ для данных. По этому ключу можно находить новые-удалённые записи, т.к. в этом случае ключ будет только или в удалённом или в локальном хранилище. А для поиска изменений нужно будет сравнивать по всем полям все строки таблиц у которых ключ есть и в локальном и в удалённом хранилище.
Длинна текущей последовательности. В этом hash map каждый ключ это отдельная последовательность а значение это ее длинна. Если брать ваш пример то как тот будет:
Шаг 1
Ключ = 1 значение = 1
Шаг 2
Ключ = 2 значение = 2 потому что мы продолжаем последовательность начатую на шаге 1
Шаг 3
Уже имеем две последовательности
Ключ = 2 значение 2
Ключ = 433 значение = 1
Шаг 4
Ключ = 2 значение = 2
Ключ = 433 значение = 1
Ключ = 500 значение = 1
Шаг 5
Ключ = 3 значение = 3
Ключ = 433 значение = 1
Ключ = 500 значение = 1
Шаг 6
Ключ = 3 значение = 3
Ключ = 433 значение = 1
Ключ = 500 значение = 1
Ключ = 900 значение = 1
Шаг 7
Ключ = 4 значение = 4
Ключ = 433 значение = 1
Ключ = 500 значение = 1
Ключ = 900 значение = 1
Т.е. на каждом шаге мы берём один элемент из массива и либо удлиняем имеющуюся цепочку, либо начинаем новую.
https://habrahabr.ru/company/ncloudtech/blog/264923/
Если ответ нет, тогда второй вопрос: может ли один пользователь залогиниться с разных устройств и менять свои данные, если да то тоже отсылка к предыдущей статье.
Третий вариант, ответ нет на оба вопроса. Тогда для синхронизации данных на локале и в удаленном хранилище нужно иметь уникальный ключ для данных. По этому ключу можно находить новые-удалённые записи, т.к. в этом случае ключ будет только или в удалённом или в локальном хранилище. А для поиска изменений нужно будет сравнивать по всем полям все строки таблиц у которых ключ есть и в локальном и в удалённом хранилище.