我有两个ArrayList。我想将列表与它们之间的最新数据同步。基本上,我的目标是将本地数据库与我的后端同步。所以我想用最新的数据替换本地数据库,反之亦然。同步这两个列表的有效方法(使用最少的循环)是什么?
详细说明:如果我的第一个列表有15个项目而第二个列表有9个项目。那么我想制作两个列表,每个列表包含15个项目,同时包含最新数据。
我的自定义对象:
public class CustomObject {
private String uniqueId;
private Date updatedAt;
public String getUniqueId() {
return uniqueId;
}
public void setUniqueId(String uniqueId) {
this.uniqueId = uniqueId;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
}
谢谢。
答案 0 :(得分:0)
如果我理解你想要什么,你是否正在尝试使用2个列表中的最新数据构建单个列表?有很多方法可以做到这一点,这里有一个使用地图:
List<CustomObject> list // retrieved from local db
list.addAll(getListFromBackendDb());
Map<String, CustomObject> mappy = new HashMap<>();
for (CustomObject co : list) {
CustomObject existing = mappy.get(co.getUniqueId());
if (existing == null || co.getUpdatedAt().compareTo(existing.getUpdated()) > 0) {
mappy.put(co.getUniqueId(), co);
}
}
return new ArrayList<>(mappy.values());