如何在Java中同步两个ArrayLists?

时间:2015-12-17 19:38:48

标签: java android performance list arraylist

我有两个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;
    }
}

谢谢。

1 个答案:

答案 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());