[英]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.