Предполагая, что вы уже управляете свойством lastModified , если в вашей записи реализован метод hashCode () / equals (Object obj), вы можете создать два Set<Entry>
, один на клиентском, один на сервере,Затем на стороне сервера вы можете сравнить две коллекции с кодом, подобным
List<Entry> updated = getServerEntries().stream().filter(serverEntry -> {
return getClientEntries().contains(serverEntry);
}).collect(Collectors.toList());
. Очевидно, этот код предполагает, что клиент должен быть синхронизирован на основе стороны сервера Set<Entry>
, в общем случае Метод "" будет сначала искать запись с использованием хэша, затем, если он найдет два одинаковых хэш-кода, использует равно .
Простой хэш-код может быть
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((filename == null) ? 0 : filename.hashCode());
result = prime * result + ((lastModified == null) ? 0 : lastModified.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
Приятно то, что у вас есть все это бесплатно, если ваше приложение автоматически обновляет Entry.lastModified при возникновении.