[英]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”表示法的简单英语解释是什么?
这取决于您要对该集合执行什么操作。 这些是标准选项:
HashSet
。 设置好此Set
后, contains()
方法将在O(恒定)时间内运行。 LinkedHashSet
。 它与HashSet
几乎相同,但是它在Set的顶部维护一个LinkedList
,因此您可以维护原始插入的顺序。 contains()
方法将在O(log n)时间返回,这仍然相当快。 如果这些都不适合您,那么您可以拥有自己的集合,分配另一个HashSet
并将其一起维护。 但是,恐怕在大多数情况下,性能提升是不合理的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.