繁体   English   中英

如何加快收集“包含”执行计划的速度?

[英]How to speed collection “contains” execution plan?

如果我比喻Oracle数据库:它们具有“索引”和“提示”的概念,可以加快查询的执行速度 因此,我想与Java类似:是否可以使collection的“ contains ”方法的执行更快?

是否可以使集合的“包含”方法的执行更快?

是的,使用具有更快的contains方法的集合。

例如

HashSet -> O(1)
SortedSet -> O(ln N)
List -> O(N)

big-O时间复杂度表示随着集合大小的增长,最坏情况下的操作时间。 较低的时间复杂度对于中等到大型集合而言更快。

注意:这仅告诉您集合的缩放比例。 如果集合非常小(如1或2),则列表可能是最快的。

Big-O表示法得到了很好的解释“ Big O”表示法的简单英语解释是什么?

这取决于您要对该集合执行什么操作。 这些是标准选项:

  1. 如果插入顺序无关紧要,则可以使用HashSet 设置好此Set后, contains()方法将在O(恒定)时间内运行。
  2. 另外,您可以使用LinkedHashSet 它与HashSet几乎相同,但是它在Set的顶部维护一个LinkedList ,因此您可以维护原始插入的顺序。
  3. 如果要保持项目的自然顺序 ,可以使用TreeSet 它的contains()方法将在O(log n)时间返回,这仍然相当快。

如果这些都不适合您,那么您可以拥有自己的集合,分配另一个HashSet并将其一起维护。 但是,恐怕在大多数情况下,性能提升是不合理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM