簡體   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