0

Ok, here's my problem: I download a list of items from the net and I store them in a db. Across successive downloads an item could not be present anymore so, for example:

first download: item1 item2 item3

second download: item1 item3

in this case I have to detect that item2 is not present anymore and so remove it from the database also.

I thought to mantain a list of db items and call on it "contains" method for each item I download...but I'd like to do this in the most efficient way so I'm asking what of the many java implementations is the best for my problem. Note that each item has an unique id, so the list would contain just strings.

4

3 回答 3

7

AHashSet比 List 具有更好的查找性能。
(如果您需要保留插入顺序,请LinkedHashSet改用。)

于 2012-11-09T16:18:53.620 回答
2

...以最有效的方式...

使用数据库。

为什么不在数据库中使用时间戳?

当您下载新项目时,您可能无论如何都必须更新数据库(如果某些属性发生更改),因此您还可以更新所有下载项目的时间戳。

之后,您可以从数据库中删除时间戳早于下载的所有项目。所以没有必要在内存中保存完整的新旧集合并进行查找,让数据库处理它(它可以更有效地完成它)。

保存时间戳的开销很小,您甚至可以使用类似数字的东西,每次运行例程时都会增加一次。

于 2012-11-09T16:32:12.960 回答
2

如果您的下载没有多次出现,我建议您使用HashSet. 如果您打算稍后使用对象,请确保这些对象覆盖该hashcode方法。

于 2012-11-09T16:19:51.103 回答