什么是有效的“包含此元素”列表?

时间:2012-11-09 16:16:55

标签: java

好的,这是我的问题:我从网上下载了一个项目列表,然后将它们存储在数据库中。 在连续下载中,项目不再存在,例如:

首次下载: ITEM1 ITEM2 项目3

第二次下载: ITEM1 项目3

在这种情况下,我必须检测到item2不再存在,因此也将其从数据库中删除。

我想要保存一个数据库项目列表,并为我下载的每个项目调用它“包含”方法...但我想以最有效的方式执行此操作,所以我问的是多少java实现是我的问题的最佳选择。 请注意,每个项目都有唯一的ID,因此列表只包含字符串。

3 个答案:

答案 0 :(得分:7)

HashSet具有比列表更好的查找性能 (如果您需要保留广告订单,请改用LinkedHashSet。)

答案 1 :(得分:2)

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

答案 2 :(得分:2)

  

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

使用数据库。

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

下载新项目时,您可能还是必须更新数据库(如果某些属性已更改),因此您还可以更新所有下载项目的时间戳。

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

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