【发布时间】:2013-01-11 19:27:37
【问题描述】:
所以我有一个包含一组记录的程序。该集合可能有几件或数十万件。每条记录的一位数据是时间戳。我需要消除一组中的所有项目,但其中一个在 15 秒内。最有效的方法是什么?
目前我创建了该集合的副本。然后我遍历集合,将第一个项目与其他所有项目进行比较,然后重复。如果在 15 秒内找到匹配项,我会将其从重复集中删除。然后将复制集写出到一个文件中。
显然这是可行的,但我终于意识到这是非常低效的。对于大型集,这似乎需要很长时间,假设它没有发生其他问题。有人可以为我提供一种更智能、更快、更有效(或只是适当)的方式来用 Java 执行此操作吗?我意识到,因为记录包含时间戳,所以对它们进行排序可能会有很大帮助。我想把这一切都包含在程序中,所以我想我需要研究排序和比较器。
我只是无法完全解决这个问题。我想出了一些其他的想法来改进我的代码,但我不禁觉得我仍然完全错误。感谢您的任何建议。
哦,这是给工作的,不是学校的或其他任何东西,因此感谢您的帮助。
【问题讨论】:
-
当然 - 对列表进行排序 - 然后你就可以通过一次。
-
你为什么不构建一个
Map,将时间戳作为键,将匹配项列表作为值? -
另外,这个“第一个元素”是什么?你使用 LinkedHashSet 吗?
-
@fge 以时间戳为键的地图对我完全没有帮助,它对第一个元素有什么影响?不,我现在使用 TreeSet 进行排序。
-
@cardician 看到我的回答:拥有地图会有很大帮助。
标签: java performance data-structures collections