【发布时间】:2015-08-30 16:22:41
【问题描述】:
算法比较两个list列表,同步表
我需要将本地表与从服务器加载的表同步。决定比较两个阶段的列表(本地列表和服务器)。最初,列表是排序的。它仍然是比较 id 的一个里程碑。
如果 id 在本地列表中,并且服务器不存在,则从本地数据库中删除条目(删除)。如果 id 等于本地服务器然后更新(update)。如果 id 是那里的服务器,并且没有本地,则添加(选择)。我刚刚在相位比较中遇到的问题,有问题,没有预见到。
我扔掉了我开始写的比较算法,但无法完成图像和示例。请修改它。图片示例:http://c2n.me/3mMgiZg
List<Integer> server = new ArrayList<>();
List<Integer> local = new ArrayList<>();
DatabaseHandler db = new DatabaseHandler(context);
Iterator<Integer> serIter = server.iterator();
Iterator<Integer> locIter = local.iterator();
int item1 = serIter.next();
int item2 = locIter.next();
while(serIter.hasNext()) {
if (item1 <item2) {
db.addCourse(item1);
item1 = serIter.next();
} else {
if (locIter.hasNext()) {
while (item2 < item1) {
db.deleteCourse(item2);
item2 = locIter.next();
}
if (item1 == item2) {
db.updateCourse(item1);
item2 = locIter.next();
item1 = serIter.next();
}
} else {
while(item1<item2) {
db.addCourse(item1);
item1 = serIter.next();
}
if (item1 == item2) {
db.updateCourse(item1);
item1 = serIter.next();
} else {
db.deleteCourse(item2 );
continue other;
}
}
}
other:
while(item1>item2) {
db.addCourse(item1);
item1 = serIter.next();
}
}
【问题讨论】:
-
你的英语显然有问题。也许你应该试试Stack Overflow на русском?
标签: java algorithm list synchronization compare